2013-12-19 3 views
0

내 응용 프로그램의 처리 능력을 향상시키기 위해 원시 스레드를 실행하려면 프로덕션 환경에서 JRuby에서 내 응용 프로그램을 실행해야합니다.Bundler를 사용하여 환경을 기반으로 Ruby 플랫폼 토글

그러나 개발할 때 응용 프로그램을 개발하는 데 별도의 처리 능력이 필요하지 않으므로 VM의 시작 비용을 지불하지 않는 것이 좋습니다.

Heroku의 지침에 따라 나는 내 Gemfile에 ruby '1.9.3', engine: 'jruby', engine_version: '1.7.1' 지시어를 사용하여 JRuby를 사용할 계획임을 알립니다.

스테이징 환경이나 프로덕션 환경에서 앱을 실행할 때 bundler에게 JRuby 만 사용하도록 지시 할 수있는 방법이 있습니까? 아니면 MRI를 실행할 수 있습니까? 같은

뭔가 :

IF I AM IN PRODUCTION OR STAGING 
    ruby '1.9.3', engine: 'jruby', engine_version: '1.7.1' 
ELSE 
    ruby '2.0.0', patch_level: 353 
END 
+0

내가보기 엔 당신이 생산에 사용하는 것보다 개발에서 다른 루비 인터프리터 실행에 추천 할 것입니다. MRI와 JRuby 사이의 호환성은 좋지만 완벽하지는 않습니다. 호환성 문제를 파악하기 위해 준비가 끝날 때까지 기다리면 진단이 어려울 수있는 매우 미묘한 버그가 발생할 수 있습니다 (특히 멀티 스레딩 문제). –

답변

1

당신은 당신의 준비 및 프로덕션 서버뿐만 아니라, 로컬 서버에 사용자가 선택한 환경 변수를 추가하고 다음과 같이 적절한 루비 버전을 사용하여 그 값을 확인할 수 있습니다 :

## based on an ENV variable 
if ENV['KIND_OF_SERVER'] == "development" 
    ruby '2.0.0', patch_level: 353 
else 
    ruby '1.9.3', engine: 'jruby', engine_version: '1.7.1' 
end