【发布时间】:2017-04-06 13:15:32
【问题描述】:
在编写 Rails 4 应用程序的过程中,我最近一直想知道在哪里以及如何存储自定义配置信息?具体来说,我的意思是 App 标题、特殊电子邮件地址、也许是 主题选项 等,我想在使用任一环境的整个应用程序中引用这些内容变量或其他结构。我一直在挖掘 - 在部署之前 - 最终使用了一个漂亮的初始化程序来创建这样的 OpenStruct
require 'ostruct'
all_config = YAML.load_file("#{Rails.root}/config/app_config.yml") || {}
env_config = all_config[Rails.env] || {}
AppConfig = OpenStruct.new(env_config)
读取以下 yaml 文件 (app_config.yml)
default: &default
general:
app_title: MyName
maintainer_email_address: someone@somewhere.org
development:
<<: *default
test:
<<: *default
production:
<<: *default
在开发过程中,我非常乐意通过 AppConfig.general.* 访问我必须访问的所有内容,但不幸的是,这在生产中不起作用,尝试启动服务器/控制台最终会引发 Uninitialized constant AppConfig-错误。
现在我有两到三个问题:
1) 我可以假设由于文件的加载顺序,这在生产中不起作用,其中production.rb 被加载之前初始化程序(-> AppConfig 作为全局变量不是现在)
2) 如果是:为什么这在开发中有效?有什么不同?
3) 存储上述信息的好习惯是什么?我的愿望是能够通过某种用户/管理界面轻松地获取和设置这些信息。从那里我不想太用力地弄乱我的环境文件......
好的,希望有人能帮帮我,在此先感谢! 安迪
【问题讨论】:
-
感谢您的提示。不幸的是,它没有回答问题 1 和 2。你对此有什么线索吗?
标签: ruby-on-rails ruby-on-rails-4