使用 Gemfile 中的环境变量部署到 Heroku

Deploying to Heroku with environment variables in Gemfile

我最近更新了我们的 Gemfile,因为 pry-byebugbye-bug 导致我的一些同事的 Rubymine 崩溃。由于我们中有些人使用其他编辑器,因此我在 Gemfile 中添加了一个环境变量:

if ENV["USE_DEBUGGER"]
  gem "pry-byebug"
  gem "byebug"
end

这在我们的本地机器上运行良好,但部署到 Heroku 会导致以下错误:gist

我已经尝试 运行 bundle install 并提交了一个新的 Gemfile.lock 但这没有任何改变。摆脱控制流声明或简单地删除 gems 修复了 issue.It 一文不值的问题,在同一次提交中我将所需的 ruby 版本提高到 2.2.0

有没有什么方法可以在 Gemfile 中使用条件语句而不破坏 Heroku?

将条件包装在一个组中并尝试 BUNDLE_WITHOUT 部署。 ref

group :byebug do
  if ENV["USE_DEBUGGER"]
    gem "pry-byebug"
    gem "byebug"
  end
end

heroku config:add BUNDLE_WITHOUT="byebug"

好吧,在使用 RubyMine 后,我意识到当 requireing pry 和任何其他相关的调试 gem 时会出现问题。我设法通过将我的 Gemfile 更新为以下内容来解决此问题:

  if ENV["USE_DEBUGGER"]
    gem "pry-byebug"
    gem "byebug"
  else
    gem "pry-byebug", require: false
    gem "byebug", require: false
  end

我希望这对面临类似问题的任何人有所帮助。