2013-12-19 55 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

我會強烈建議不要在發展不同的Ruby解釋器運行比你在生產中使用。核磁共振和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