【问题标题】:Rails environment variables failing to load in modelRails 环境变量无法在模型中加载
【发布时间】:2015-07-09 00:51:24
【问题描述】:

我有一个在两个地方使用的环境变量,一个在 rake 任务中,另一个在模型方法中。当我从 rake 任务中调用它时,一切都很好并且变量加载,但是当我从模型中调用它时,它什么也没找到。这不是零错误或任何其他错误,它只是返回一个空字符串。

环境变量是否会被模型覆盖或无法访问?

它被用来构建一个 url:

http://#{AppEnv['env_var_1']}/this/is/#{AppEnv['env_var_2']}/a/path

--还有一件事,myabe是相关的,模型方法叫after_create

编辑:

感谢您的回复,但我的问题不是如何访问或使用环境变量,正如您所见,我已经在上面使用它们了。我的问题是为什么它们没有加载到我的模型中。

编辑 2:

我有 4 个相关的 AppEnv 变量,当我在运行 rake 任务时检查它们(puts 全部 4 个到日志)时,[这真的很奇怪,请耐心等待],它们符合预期。当我运行完全相同的类方法,但在模型中调用 after_create 时,其中 3 个变量为空,其中一个包含不同变量的值。那就是:

AppEnvVar1 为空

AppEnvVar2 的值为 AppEnvVar4

AppEnvVar3 为空

AppEnvVar4 为空

如果我将方法更改为self.method(允许我从控制台运行它)并运行它,它就可以工作。所以我很确定在after 过滤器期间我已经将其缩小到AppEnv 的问题。 关于在哪里挖掘的任何想法?

【问题讨论】:

  • 环境变量应该与ENV 在 rake 和 rails 模型中可用。

标签: ruby-on-rails model environment-variables rake


【解决方案1】:

我重新启动了服务器,一切正常。神秘...

【讨论】:

    【解决方案2】:

    Rails 设置了一个全局常量哈希 ENV,它应该在您的应用初始化后任何地方都可用,包括在您的模型中。所以你应该能够像这样引用任何环境变量(假设已经设置了相关的环境变量):

    "http://#{ENV['ROOT_DOMAIN']}/this/is/#{ENV['SECONDARY_DOMAIN']}/a/path"
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 2021-01-19
      • 2021-11-08
      • 1970-01-01
      • 2021-07-11
      • 2015-09-02
      • 1970-01-01
      • 2015-05-25
      • 2013-02-28
      相关资源
      最近更新 更多