X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/74aa6539fccff9b135f3edec58801976b9a51538..c790738ae71771a5574b166b3e93a1bca9b89bf6:/services/api/config/initializers/load_config.rb diff --git a/services/api/config/initializers/load_config.rb b/services/api/config/initializers/load_config.rb index f56bb2db41..cb31a24784 100644 --- a/services/api/config/initializers/load_config.rb +++ b/services/api/config/initializers/load_config.rb @@ -1,17 +1,44 @@ -conf = {} -%w(config.defaults config).each do |cfgfile| +begin + # If secret_token.rb exists here, we need to load it first. + require_relative 'secret_token.rb' +rescue LoadError + # Normally secret_token.rb is missing and the secret token is + # configured by application.yml (i.e., here!) instead. +end + +if (File.exists?(File.expand_path '../omniauth.rb', __FILE__) and + not defined? WARNED_OMNIAUTH_CONFIG) + Rails.logger.warn <<-EOS +DEPRECATED CONFIGURATION: + Please move your SSO provider config into config/application.yml + and delete config/initializers/omniauth.rb. +EOS + # Real values will be copied from globals by omniauth_init.rb. For + # now, assign some strings so the generic *.yml config loader + # doesn't overwrite them or complain that they're missing. + Rails.configuration.sso_app_id = 'xxx' + Rails.configuration.sso_app_secret = 'xxx' + Rails.configuration.sso_provider_url = '//xxx' + WARNED_OMNIAUTH_CONFIG = true +end + +$application_config = {} + +%w(application.default application).each do |cfgfile| path = "#{::Rails.root.to_s}/config/#{cfgfile}.yml" if File.exists? path yaml = ERB.new(IO.read path).result(binding) confs = YAML.load(yaml) - conf.merge!(confs['common'] || {}) - conf.merge!(confs[::Rails.env.to_s] || {}) + # Ignore empty YAML file: + next if confs == false + $application_config.merge!(confs['common'] || {}) + $application_config.merge!(confs[::Rails.env.to_s] || {}) end end Server::Application.configure do nils = [] - conf.each do |k, v| + $application_config.each do |k, v| # "foo.bar: baz" --> { config.foo.bar = baz } cfg = config ks = k.split '.' @@ -19,11 +46,17 @@ Server::Application.configure do ks.each do |kk| cfg = cfg.send(kk) end - if cfg.respond_to?(k.to_sym) and !cfg.send(k).nil? - # Config must have been set already in environments/*.rb. + if v.nil? and cfg.respond_to?(k) and !cfg.send(k).nil? + # Config is nil in *.yml, but has been set already in + # environments/*.rb (or has a Rails default). Don't overwrite + # the default/upstream config with nil. # # After config files have been migrated, this mechanism should - # be deprecated, then removed. + # be removed. + Rails.logger.warn <