Один из моих любимых методов - поместить файл, содержащий константы, в каталог config/initializers/
(все файлы в этом каталоге загружаются автоматически), но с разделом для каждой отдельной среды Rails. например,
case ENV['RAILS_ENV']
when "development"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
when "staging"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
when "production"
SYSTEM_EMAIL = ...
SYSTEM_EMAIL_SIGNATURE = ...
end
Если вы хотите вместо этого загрузить все константы в один большой хэш, вы можете загрузить их как файл YAML. Создайте два файла, один называется, скажем, config/initializers/email_constants.rb
, а другой config/email_constants.yml
. В последний положить что-то вроде:
development:
:system_email: ...
:system_email_signature: ...
staging:
:system_email: ...
system_email_signature: ...
... etc ...
Затем в config/initializers/email_constants.rb
положить:
EMAIL_CONSTANTS = YAML.load_file("#{RAILS_ROOT}/config/email_constants.yml")[RAILS_ENV]
Это загружает весь файл YAML и присваивает значение соответствующей клавиши (которая представляет RAILS_ENV
) для EMAIL_CONSTANTS
.
Преимущество обоих этих методов - местность. Вы можете поместить все константы, которые связаны друг с другом (т.е. в этом случае в константы электронной почты) в один файл. Кроме того, вместо того, чтобы одни и те же константы распределялись по трем различным файлам (по одному для каждой среды Rails), у вас есть все они в одном файле.