我正准备在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支持更好的方法?谢谢!
答案 0 :(得分:1)
这似乎完全可以接受,我就是这样做的(除了我使用raise
代替throw
; P)
答案 1 :(得分:1)
没关系。但您可能还想添加对Rails.logger.fatal
的调用。