У меня есть следующий код в /config/initializers/chargify.rb
Chargify.configure do |c|
c.subdomain = 'example'
c.api_key = '123xyz'
end
Но у меня есть различные настройки для разработки и производства.
Так, как у меня было бы другое множество значений переменных на основе среды?
Я бы создал конфигурационный файл для этого (config/chargify.yml
):
development:
subdomain: example
api_key: 123abc
production:
subdomain: production_domain
api_key: 890xyz
И затем измените ваш инициализатор следующим образом:
chargify_config_file = File.join(Rails.root,'config','chargify.yml')
raise "#{chargify_config_file} is missing!" unless File.exists? chargify_config_file
chargify_config = YAML.load_file(chargify_config_file)[Rails.env].symbolize_keys
Chargify.configure do |c|
c.subdomain = chargify_config[:subdomain]
c.api_key = chargify_config[:api_key]
end
Если вам понадобятся разные настройки для разных сред, лучше всего поместить их в соответствующий файл среды, например config / environment / development.rb
.
Если вы абсолютно настаиваете на помещении их в инициализатор (но, пожалуйста, не делайте этого, файлы окружения для этого предназначены), вы можете использовать оператор case
и проверить значение Rails .env
, который возвращает имя текущей среды в виде строки.