Инициализатор направляющих для разработки и производства

У меня есть следующий код в /config/initializers/chargify.rb

Chargify.configure do |c|
  c.subdomain = 'example'
  c.api_key   = '123xyz'
end

Но у меня есть различные настройки для разработки и производства.

Так, как у меня было бы другое множество значений переменных на основе среды?

17
задан Shpigford 12 May 2010 в 13:06
поделиться

2 ответа

Я бы создал конфигурационный файл для этого (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
29
ответ дан 30 November 2019 в 11:37
поделиться

Если вам понадобятся разные настройки для разных сред, лучше всего поместить их в соответствующий файл среды, например config / environment / development.rb .

Если вы абсолютно настаиваете на помещении их в инициализатор (но, пожалуйста, не делайте этого, файлы окружения для этого предназначены), вы можете использовать оператор case и проверить значение Rails .env , который возвращает имя текущей среды в виде строки.

4
ответ дан 30 November 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: