【发布时间】:2011-07-06 21:36:10
【问题描述】:
对于我正在编写的 Rails 3 应用程序,我正在考虑从本地文件系统上的 XML、YAML 或 JSON 文件中读取一些配置数据。
重点是:我应该把这些文件放在哪里? Rails 应用程序中是否有存储此类内容的默认位置?
附带说明,我的应用部署在 Heroku 上。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 configuration heroku
对于我正在编写的 Rails 3 应用程序,我正在考虑从本地文件系统上的 XML、YAML 或 JSON 文件中读取一些配置数据。
重点是:我应该把这些文件放在哪里? Rails 应用程序中是否有存储此类内容的默认位置?
附带说明,我的应用部署在 Heroku 上。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 configuration heroku
我经常做的是:
然后我创建一个初始化程序,在其中加载 YAML,我符号化配置哈希的键并将其分配给像 APP_CONFIG 这样的常量
【讨论】:
您还可以将它包含在模型中,这样您就可以从应用中的任何位置调用Settings.var_name,它会解析文件以找到合适的环境。
与settingslogicgem:
class Settings < Settingslogic
source "#{Rails.root}/config/settings.yml"
namespace Rails.env
end
【讨论】:
Rails 默认创建一个config 目录,其中包含许多应用程序的配置信息,包括数据库和环境信息。我认为这是一个合乎逻辑的首要考虑。
第二个选择是app 目录,它包含应用程序的所有模型、视图和控制器,但我认为该目录包含可执行代码及其模板,所以我会选择@987654323 @目录,个人。
【讨论】:
我通常会采用这种方法:
一个配置/config.yml
development:
another_key: "test"
app_name: "My App"
test:
another_key: "test"
production:
prova: "ciao"
然后在初始化器中创建一个结构体
#config/initializer/load_config.rb
require 'ostruct'
config = OpenStruct.new(YAML.load_file("#{RAILS_ROOT}/config/config.yml"))
::AppSetting = OpenStruct.new(config.send(RAILS_ENV))
根据环境设置没有数据库表,您可以通过简单的方式检索信息
AppSetting.another_key
AppSetting.app_name
here 参考
祝你有美好的一天!
【讨论】: