2011-08-11 5 views
1

몇 년 전에 레일 애플리케이션을 배포하는 것이 상당히 까다로운 것처럼 보였습니다. 그러나, 내가 최근에 읽은 바에 따르면 레일이이 분야에서 많이 개선 된 것으로 보인다. 그러나 Ruby 및 gem 종속성 문제의 다양한 버전을 고려할 때 배포는 여전히 두통입니다 (예 : heroku 또는 engine yard).레일 배포의 현재 상태

+0

몇 년 전만해도 배포와 관련하여 문제가 없었으며 지난 번에는 많은 변경 사항이 없었습니다. 귀하의 요구 사항이 capistrano 또는 다른 도구가 관리 할 수있는 것을 충족시키는 것은 일반적인 작업입니다. Capistrano는 37 시그널로 패치 된 널리 사용되는 솔루션입니다 – Anatoly

답변

4

아니요. Heroku는 배포가 너무 쉽습니다. 완전히 힘내에 의해 관리되기 때문에 앱이 격리되어 있으므로 의존성 문제가 없으며 소규모 앱에는 무료입니다. EngineYard 및 DotCloud와 같은 기타 서비스는 유사한 서비스를 제공합니다 (EY는 저렴하지 않으며 DotCloud는 루비 중심이 아닙니다).

0

필요에 따라 배포가 어려울 수 있습니다. 서버에서 하나의 응용 프로그램을 실행하는 경우 Capistrano (here's a sample of how to do it using Nginx and Unicorn)를 사용하여 루비를 설치하고 배포 환경을 설정하는 것이 쉽습니다.

(다른 루비와 보석 그룹에서 실행될 수있는) 많은 다른 응용 프로그램이 필요하다면 더 많은 작업을 할 수 있지만 완전히 가능합니다. 서로 충돌하지 않고 많은 다른 루비를 동시에 설치하려면 RVM을 사용하고 모든 앱 종속성이 정의되어 있는지 확인하려면 레일스 앱이 Bundler (또는 동일한 기능을하는 다른 앱)을 사용해야합니다.

귀하의 요구 사항은 더 간단하게 만들지는 않겠지 만 실제로 불가능하지 않으며 작업에 사용할 수있는 도구의 양과 품질에 미치지 못합니다.

3

배포 및 관리를 쉽게 해주는 도구가 많이 있습니다.

Heroku가
에게 Heroku는 완전히 heroku 보석을 통해 자식에 의해 관리됩니다. 기본적으로, 당신은 heroku push 대신 git push를 호출하고 변경 사항이 서버에 푸시 구축, 사이트가 자동으로

Bundler를
Bundler를 훨씬 쉽게 보석을 관리했다 업데이트됩니다 얻을, 그것은 매우 간단합니다.

RVM
RVM 실제로 서버에서 사용할 수있는 좋은 도구입니다. 하나의 서버가 Ruby의 다른 버전에있는 여러 개의 Rails 애플리케이션을 서비스 할 수있게하며, 완전히 고유 한 Gemset을 가지고 있습니다 (즉, 동일한 루비 버전을 사용하는 여러 애플리케이션에 보석 충돌이 발생하지 않습니다.) 보석 충돌은 입니다. 사라진!).

카피 스트라 노
Capistrano 당신이 배포 중에 발생하는 데 필요한 모든 기능을 정의 할 수 있습니다, 당신은 시작하고 하나의 간단한 명령으로 모두를 종료 할 수 있습니다 - cap deploy. 배포 프로세스가 크게 단순 해집니다. 응용 프로그램 (서버, 지연 :: 작업, 스핑크스 등) 시작하는 여러 서비스를 필요로하는 경우

포먼
, Foreman 당신을위한 도구입니다. foreman start을 호출하여 필요한 서비스를 정의하고 즉시 시작할 수 있습니다. 카피 스트라 노와 잘 어울리 며 서비스의 콘솔 출력을 읽기 쉽도록 만듭니다.전체


, 나는 레일 배포의 상태가 몇 년 전보다 더 크기 순서라고 말하고 싶지만,하지만 방 개선을 위해 항상있다. 위에서 언급 한 프로젝트는 좋은 시작이며 조직에 가장 적합한 것이 무엇인지 찾는 문제 일뿐입니다.

+0

Heroku의 보석은 Heroku의 호스팅 서비스에서만 작동하지만 지적 된 다른 도구는 호스팅 제공 업체와 별개입니다. –

+0

이것은 완전히 정확하지는 않습니다. 많은 다른 명령이'heroku '형식이지만 'git push heroku master'또는 이와 유사한 것을 사용하여 Heroku에 푸시합니다. – Andrew

관련 문제