LoginSignup
4
1

More than 5 years have passed since last update.

railsconfigのsettings.ymlの読み先を、Rails.envではなく環境変数で切り替わるように

Posted at

バージョン

config (1.4.0)
spring (2.0.2)

Gemfile
group :development, :test do
  gem 'spring'
end

gem 'config'

環境変数 SETTINGS_YML_NAME を優先して見るように

config/initializers/config_environment.rb
if name = ENV['SETTINGS_YML_NAME']
  Settings.add_source!("config/settings/#{name}.yml")
  Settings.reload!
end

settings.yml -> development.yml -> SETTINGS_YML_NAME.yml の順に優先度が高い(上書きしている)

array型をymlで設定していたら↑の読み込み順に追加されてしまうので、以下のように config.overwrite_arrays = true しておく。

config/initializers/config.rb
Config.setup do |config|
  config.const_name = "Settings"
  config.overwrite_arrays = true
end

springを再起動しなくても読み直すように

config/application.rb
class Application < Rails::Application
  Config::Integrations::Rails::Railtie.preload
end
config/spring.rb
if defined? Spring
  Spring::application_root_path ||= Rails.root
  Dir.glob('config/settings*').each{ |settings| Spring.watch settings }
  Dir.glob('config/settings/*').each{ |settings| Spring.watch settings }
end
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1