루비 버전 지정하기

개발자는 gem처럼 루비의 의존성도 지정할 수 있습니다. 이렇게 함으로써 애플리케이션이 루비 VM의 특정 기능에 의존하는 경우 빠르게 실패하도록 합니다. 이런 식으로, 배포 서버의 루비 VM이 로컬의 루비와 일치하는지 확인할 수 있습니다. 의존성 지정은 Gemfileruby 지시자를 사용함으로써 할 수 있습니다.
ruby 'RUBY_VERSION', :engine => 'ENGINE', :engine_version => 'ENGINE_VERSION', :patchlevel => 'RUBY_PATCHLEVEL'
루비 1.9.3을 사용해 JRuby 1.6.7을 사용하고 싶을 때엔, 이렇게 하면 됩니다.
ruby '1.9.3', :engine => 'jruby', :engine_version => '1.6.7'
루비의 패치레벨을 제한하는 것도 가능합니다.
ruby '1.9.3', :patchlevel => 448
번들러는 현재 실행 중인 루비 VM이 Gemfile 안에서 지정한 루비 버전과 일치하는지 확인합니다. 일치하지 않는다면, 번들러는 일치하지 않음을 설명하는 예외를 발생시킵니다.
Your Ruby version is 1.8.7, but your Gemfile specified 1.9.3
:engine:engine_version은 선택적입니다. 이 옵션을 생략할 경우, 이 애플리케이션이 특정 루비 ABI와 호환하지만 엔진은 무관하다는 의미가 됩니다. :engine을 사용할 경우 반드시 :engine_version도 지정해야 합니다.
platform 명령어를 --ruby 플래그와 사용할 경우, Gemfile 안에 어떤 ruby 지시자가 지정되었는지 볼 수 있습니다.
ruby 1.9.3 (jruby 1.6.7)
자세한 내용은: bundle platform
ruby 지시자에서, :patchlevel은 선택적입니다. 패치레벨 릴리스는 보통 호환가능하며 중요한 보안 픽스를 포함하고 있습니다. 패치레벨 옵션은 RUBY_PATCHLEVEL 상수를 확인하며, 지정되어 있지 않으면 그냥 무시합니다.
Fork me on GitHub
Docs: Previous Version (v1.10) Current Version (v1.11)