将应用程序变量放入 Application.rb 与 initializers/file.rb 相比有什么好处吗?

Is there any benefit to putting application variables in Application.rb vs an initializers/file.rb

关于在何处存储您的应用程序范围的变量有很多建议,包括一些为您做这件事的 gem。对于 Rails 4,我发现最简单的方法是在 Application.rb 或 initializers/file.rb 中向 'config' 添加一个变量,例如 [=14] =]

#/config/application.rb
config.new_variable = 5

#/config/initializers/application_variables.rb
Rails.application.config.new_variable = 5

我想知道这两者是否有任何区别,可能是加载时间,或者是否每次刷新应用程序时都会调用应用程序中的那个,等等...

这完全取决于预期用途。我会使用 /config/application.rb 来仅配置实际的 Rails 应用程序。不要存储我自己的代码中使用的杂项变量。那只是变相的全局。

对于 API 密钥和其他秘密点点滴滴,答案是使用环境变量结合初始化程序:

# /config/initializers/boozehound_client
# a fictional API client 

Boozehound.configure(
  api_key: ENV['BOOZEHOUND_API_KEY'],
  secret: ENV['BOOZEHOUND_API_SECRET']
)

否则,如果您需要跨控制器使用变量,您可以将其放置在 ApplicationController