我使用YAML文件来存储一些机密配置数据.我只是在开发环境中使用该文件.在生产中我使用ENV变量.
这就是我现在正在做的事情:
我有一个config / confidenceal.yml文件,看起来像这样:
email: user_name: 'my_user' password: 'my_passw'
我有一个config / environments / development.rb文件(除其他东西外)有这些行:
# Mailer config email_confidential = YAML.load_file("#{Rails.root}/config/confidential.yml")['email'] config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com",:port => 587,:domain => 'baci.lindsaar.net',:user_name => email_confidential['user_name'],:password => email_confidential['password'],:authentication => 'plain',:enable_starttls_auto => true }
我的问题是:我如何确保YAML文件存在并且可以加载,如果没有抛出一些异常?应该放在哪里?
解决方法
为什么不
unless File.exists? ("#{Rails.root}/config/confidential.yml") # do what you want (throw exception or something) end
顺便说一下,我认为将配置yaml加载到初始化器是个好主意.例如
# config/initializers/load_project_config_file.rb if File.exists? ("#{Rails.root}/config/project.yml") PROJECT = YAML.load_file("#{Rails.root}/config/project.yml") else PROJECT = {} end