Ich bin gerade dabei, ein Rails-Projekt auf GitHub zu veröffentlichen, das ein Umbenennen und Konfigurieren einiger YML-Dateien oder das Festlegen von Umgebungsvariablen erfordert. Die Anwendung hat ein paar benutzerdefinierte Initialisierer und ich frage mich, was der beste Weg, um das Vorhandensein der oben genannten zu erzwingen ist? Derzeit bin ich mit dem folgenden Code-Schnipsel in einen meines initializers:Rails Initialiser Halte
# 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
Ist es gängige Praxis zu throw
von initializers oder nicht Rails unterstützt einen besseren Weg, dies zu tun? Vielen Dank!
'Rails.logger.fatal' scheint im Initialisierer nichts zu tun. Muss ich etwas spezielles konfigurieren, um das zu verwenden? –
Nicht sicher. Protokolliert es irgendetwas in die Datei 'log/# {env} .log'? – yfeldblum
Ich habe gerade festgestellt, dass es in den Protokollen schreibt, aber nicht den Start des Servers (oder Drucken auf die Ausgabe beim Ausführen von "Rails s") zu stoppen. –