【问题标题】:Using Bundler to toggle Ruby platform based on environment使用 Bundler 根据环境切换 Ruby 平台
【发布时间】:2014-01-08 16:14:38
【问题描述】:

我需要在生产环境中在 JRuby 上运行我的应用程序以运行本机线程来提高我的应用程序的处理能力。

但是,在开发时,我宁愿不支付 VM 的启动成本,因为我不需要额外的处理能力来开发应用程序。

根据 Heroku 的指示,我在 Gemfile 中使用 ruby '1.9.3', engine: 'jruby', engine_version: '1.7.1' 指令来提醒他们我计划使用 JRuby。

有没有一种方法可以指示捆绑程序仅在我在暂存或生产环境中运行应用程序时使用 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

【问题讨论】:

  • 我强烈建议不要在开发中使用与生产中不同的 Ruby 解释器运行。 MRI 和 JRuby 之间的兼容性很好,但并不完美,如果您等到 staging 才发现不兼容性,您最终可能会遇到一些难以诊断的非常微妙的错误,尤其是在多线程方面。

标签: ruby jruby bundler gemfile


【解决方案1】:

您可以将您选择的环境变量添加到本地服务器以及登台和生产服务器,并检查其值以使用适当的 ruby​​ 版本,如下所示:

## 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

【讨论】:

    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2021-07-15
    • 2021-08-24
    相关资源
    最近更新 更多