Rails 环境变量无法加载到模型中

Rails environment variables failing to load in model

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

是否存在模型覆盖或无法访问环境变量的任何原因?

它被用来构建 url:

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

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

编辑:

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

编辑 2:

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

AppEnvVar1 为空

AppEnvVar2 的值为 AppEnvVar4

AppEnvVar3 为空

AppEnvVar4 为空

如果我将方法更改为 self.method(允许我从控制台 运行 它),然后 运行 它,它就会起作用。所以我很确定我已经将问题缩小到 after 过滤器期间 AppEnv 的问题。 关于在哪里挖掘有什么想法吗?

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

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

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