【问题标题】:Conditional ruby platform specification in GemfileGemfile 中的条件 ruby​​ 平台规范
【发布时间】:2014-03-29 19:10:39
【问题描述】:

根据https://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku,我想利用heroku 功能在Gemfile 中指定我的Ruby 版本。但是,虽然我想在 heroku 上运行 JRuby,但我希望能够在 CRuby 上进行一些开发。问题是当我的.ruby-version 文件中的 ruby​​ 规范与 Gemfile 中的不同时,每当我尝试运行任何东西时,我都会收到以下投诉:

Your Ruby engine is ruby, but your Gemfile specified jruby

有什么方法可以避免这个问题,而无需在 CRuby 中修改我的 Gemfile?特别是,我可以在 Gemfile 中指定 ruby​​ 的条件,以使这种抱怨在开发过程中消失,但它仍然会对 heroku 生效(也不会弄乱 travis)。

我尝试将 gem 规范限制为生产组:

group :production do
  ruby ruby '1.9.3', engine: 'jruby', engine_version: '1.7.9'
end

但这对开发没有影响。

更新:意识到 Gemfile 是“只是 ruby​​”,我插入了一个标准的 ruby​​ if 语句,基于我看到的环境变量存在于 Heroku 但在其他地方不可用(即DYNO),但我仍然对是否有一种更主流的方法感兴趣。

【问题讨论】:

    标签: ruby heroku rvm jruby bundler


    【解决方案1】:

    试试类似的东西:

    #ruby=1.9.3
    source 'https://rubygems.org'
    if ENV["JRUBY"] || RUBY_PLATFORM == "java"
    # https://devcenter.heroku.com/articles/ruby-support#ruby-versions
    ruby '1.9.3', engine: 'jruby', engine_version: '1.7.10'
    else
    ruby '1.9.3'
    end
    

    注意:第一个注释是针对 RVM 的,因为它在解析 ruby​​ 声明时可能会混淆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多