【问题标题】:Rails gem not using environment variableRails gem不使用环境变量
【发布时间】:2013-12-31 16:21:07
【问题描述】:

我创建了一个 Rails gem 和一个使用该 gem 的 Rails 应用程序。 gem 部署在 Gemfury,我成功地能够bundle install gem。在 gem 中,我将一个变量设置为环境变量。当我在本地运行我的应用程序时,应用程序中使用环境变量的位置能够读取我的环境变量(由 Figaro 管理),但 gem 不能。我可能遗漏了什么或做错了什么?

例如,如果我在 gem 中这样做:

 cache_enabled = ENV['CACHE_ENABLED'] || false

即使我的环境变量 CACHE_ENABLED = true,它也会以 false 结束。我的 Rails 应用读取环境变量没有问题。

如果有什么不同,我正在使用 Rails 4。

【问题讨论】:

  • 所以,环境变量是在本地设置的,是吗?生产应用位于何处?
  • 您能否验证您设置变量的环境是否与您运行库的环境相同?
  • @Mallanaga 我在本地设置环境变量并在本地运行。等我去生产的时候,我会把它放到 Heroku 中,并设置 Heroku 环境变量。
  • @zeantsoi 如果我正在运行在其 Gemfile 中指定 gems 的 Rails 应用程序,那么这些 gems 与应用程序在相同的环境中运行,对吗?
  • 请在代码行之后添加调试行:p ENV['CACHE_ENABLED'].classp cache_enabled。并向我们​​展示结果。

标签: ruby-on-rails ruby gem environment-variables


【解决方案1】:

如果您使用的是 Rails 4.1 或更高版本,那么它可能是 Spring

您应该能够$ spring stop,然后正确运行您的应用程序(因为 spring 将使用新的环境变量重新启动)。

您可以根据this 永久移除弹簧。


作为旁注,我倾向于在本地使用Foreman(包括鲜为人知的foreman run)命令,如果你这样做,那么你可以在.envs 前面加上DISABLE_SPRING=1,并且Spring 将在任何时候被绕过你用工头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多