可以为secrets.yml指定备用位置吗?

时间:2015-07-16 13:08:20

标签: ruby-on-rails

是否可以指定secrets.yml以外的路径,而不是相对于Rails根目录的默认config/secrets.yml

1 个答案:

答案 0 :(得分:3)

您需要覆盖secrets中的config/application.rb方法:

def secrets #:nodoc:
  @secrets ||= begin
    secrets = ActiveSupport::OrderedOptions.new
    yaml = config.paths["PATH_TO_SECRET_YAML_FILE"].first

    if File.exist?(yaml)
      require "erb"
      all_secrets = YAML.load(ERB.new(IO.read(yaml)).result) || {}
      env_secrets = all_secrets[Rails.env]
      secrets.merge!(env_secrets.symbolize_keys) if env_secrets
    end

    # Fallback to config.secret_key_base if secrets.secret_key_base isn't set
    secrets.secret_key_base ||= config.secret_key_base

    secrets
  end
end