2010-12-13 2 views
0

Я собираюсь опубликовать проект Rails на GitHub, который требует переименования и настройки нескольких файлов YML или установки переменных окружения. В приложении есть несколько пользовательских инициализаторов, и мне интересно, как лучше всего обеспечить наличие вышеуказанного? В настоящее время я использую следующий фрагмент код в одном из моих инициализаторов:Rails Initializer Halting

# 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 поддерживает лучший способ сделать это? Благодаря!

ответ

1

Это нормально. Но вы также можете добавить звонок в Rails.logger.fatal.

+0

'Rails.logger.fatal', похоже, ничего не делает в инициализаторе. Нужно ли мне настраивать что-нибудь особенное, чтобы использовать это? –

+0

Не уверен. Записывает ли он что-либо в файл 'log/# {env} .log'? – yfeldblum

+0

Я просто понял, что он записывает журналы, но не останавливает запуск сервера (или печатает на выходе при запуске 'rails s'). –

1

Это кажется вполне приемлемым для меня, и как я бы об этом (за исключением Я хотел бы использовать raise вместо throw; P)

Смежные вопросы