Rails Initializer暂停

时间:2010-12-13 17:06:29

标签: ruby-on-rails

我正准备在GitHub上发布一个Rails项目,该项目需要用户重命名和配置一些YML文件或设置环境变量。该应用程序有一些自定义初始化程序,我想知道强制执行上述操作的最佳方法是什么?目前我在我的一个初始化程序中使用以下代码段:

# config/initializers/omniauth.rb

config = YAML::load(File.read("#{Rails.root}/config/omniauh.yml"))[Rails.env] rescue {}
config['twitter' ] ||= {}
config['facebook'] ||= {}

twitter_key     = config['twitter' ]['key']     || ENV['OMNIAUTH_TWITTER_KEY'    ]
twitter_secret  = config['twitter' ]['secret']  || ENV['OMNIAUTH_TWITTER_SECRET' ]
facebook_key    = config['facebook']['key']     || ENV['OMNIAUTH_FACEBOOK_KEY'   ]
facebook_secret = config['facebook']['secret']  || ENV['OMNIAUTH_FACEBOOK_SECRET']

[twitter_key, twitter_secret, facebook_key, facebook_secret].each do |parameter|
  throw "Rename and configure 'omniauth.yml.sample'." if parameter.nil? or parameter.empty?
end

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter , twitter_key , twitter_secret
  provider :facebook, facebook_key, facebook_secret
end

从初始化程序到throw是标准做法还是Rails支持更好的方法?谢谢!

2 个答案:

答案 0 :(得分:1)

这似乎完全可以接受,我就是这样做的(除了我使用raise代替throw; P)

答案 1 :(得分:1)

没关系。但您可能还想添加对Rails.logger.fatal的调用。