Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails初始化器停止_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails初始化器停止

Ruby on rails Rails初始化器停止,ruby-on-rails,Ruby On Rails,我正要在GitHub上发布一个Rails项目,它需要用户重命名和配置一些YML文件或设置环境变量。这个应用程序有几个自定义的初始值设定项,我想知道强制执行上述内容的最佳方法是什么?目前,我正在我的一个初始值设定项中使用以下代码段: # config/initializers/omniauth.rb config = YAML::load(File.read("#{Rails.root}/config/omniauh.yml"))[Rails.env] rescue {} config['twi

我正要在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

从初始值设定项抛出
是标准做法还是Rails支持更好的方法?谢谢

这对我来说似乎是完全可以接受的,我也会这样做(除非我用
raise
而不是
throw
;p)

这很好。但是,您可能还需要添加对
Rails.logger.fatal

Rails.logger.fatal的调用,该调用在初始值设定项中似乎没有任何作用。我需要配置什么特殊的东西来使用它吗?不确定。它是否将任何内容记录到
log/#{env}.log
文件中?我刚刚意识到它正在写入日志,但没有停止服务器的启动(或者在运行
rails s
时打印到输出)。