我正在使用 YAML 文件来存储一些 secret 配置数据。我只是在开发环境中使用该文件。在生产中,我使用 ENV 变量。
这是我现在正在做的事情:
我有一个 config/confidental.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
关于ruby-on-rails - 如果 YAML 文件不存在或无法在 Rails 中加载,请进行救援,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276232/