Rails 环境文件中可用的配置变量

发布于 2025-01-04 21:12:33 字数 302 浏览 0 评论 0原文

我目前正在使用初始化程序将 config.yml 文件加载到 AppConfig 哈希中,该哈希提供对环境变量的访问。对于生产,我使用服务器上设置的环境变量。如果未设置环境变量(即在开发和测试中),我将使用以下代码回退到配置变量。

ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']

我的问题是,我需要其中一些变量在特定于环境的文件(development.rb/development.rb等)中可用,但该文件是在初始化程序之前加载的。我该如何处理这个问题?

I'm currently using an initializer to load a config.yml file into an AppConfig hash which offers access to variables for the environment. For production I am using environmental variables set on the server. I am using the following code to fallback to the config variable if the environmental variables are not set (i.e in development and test).

ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']

My problem is that I need some of these variables to be available in the environment-specific file (development.rb/production.rb etc), but this file is loaded before the initialzers. How should I deal with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

亽野灬性zι浪 2025-01-11 21:12:33

查看配置初始化事件的 Rails 指南。在进行此类配置时,您可以挂钩一些事件。

简而言之,您可以在初始化后完成环境配置:

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end

Have a look at the Rails guide for Configuration Initialization Events. There are events that you can hook into when doing this kind of configuration.

In short you can have configuration for the environment done after initialisation with:

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end
各自安好 2025-01-11 21:12:33

如果有办法创建像 database.yml 这样的两层结构,您始终可以在同一文件中为每个环境定义单独的配置,然后引用适当的版本:

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']

If there's a way you can create a two-tier structure like database.yml you could always define separate configurations for each environment in the same file, then reference the appropriate version:

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文