Size: a a a

Saint P Ruby Community

2020 May 18

АШ

Алексей Шеин... in Saint P Ruby Community
а как ему эту настройку передать - я решаю сам и гем config должен мне здесь всячески помогать - через переменные окружения или через статичные файлы или может даже через коннект к etcd
источник

m

max in Saint P Ruby Community
да, согласен, делайте, только имхо Application.settings.my_feature.enabled
где Application.settings выставляется в где-то при инициализации в виде Application.settings = Config[:prod] или Config[:stage] или Config[ENV['RAILS_ENV']]
источник

m

max in Saint P Ruby Community
ультимативно, наверное, так Application.settings = Config[Config.current_env || :develpment] (не знаком с его синтаксисом и возможностями), но надеюсь мысль понятна
источник

АШ

Алексей Шеин... in Saint P Ruby Community
ну а Config[:prod] откуда берется?
источник

m

max in Saint P Ruby Community
Config берется оттуда же откуда берется Application/Rails/etc - это константа
источник

AN

Andrey Novikov in Saint P Ruby Community
Алексей Шеин
а как ему эту настройку передать - я решаю сам и гем config должен мне здесь всячески помогать - через переменные окружения или через статичные файлы или может даже через коннект к etcd
В сторону гема anyway_config смотрите тогда, он как раз про это: https://github.com/palkan/anyway_config
источник

m

max in Saint P Ruby Community
а вот как вы передаете информацию о том какой конкретно энв вы хотите использовать решать только вам, по классике - ENV['RAILS_ENV']
источник

АШ

Алексей Шеин... in Saint P Ruby Community
а у меня везде Rails.env = 'production'
источник

АШ

Алексей Шеин... in Saint P Ruby Community
в этом и смысл
источник

IN

Ivan Nemytchenko in Saint P Ruby Community
Ой
источник

АШ

Алексей Шеин... in Saint P Ruby Community
приложение знает только одно окружение
источник

АШ

Алексей Шеин... in Saint P Ruby Community
а конфигурация происходит извне через переменные окружения
источник

IN

Ivan Nemytchenko in Saint P Ruby Community
Тогда тебе конечно это не нужно
источник

АШ

Алексей Шеин... in Saint P Ruby Community
и поэтому в коде всякие send_emails if Rails.env.production? меняется на send_emails if Settings.app.emails.enabled
источник

АШ

Алексей Шеин... in Saint P Ruby Community
мой посыл в том, что рельсы не должны управлять настройками приложения, а должны просто кушать то, что приходит извне
источник

IN

Ivan Nemytchenko in Saint P Ruby Community
Алексей Шеин
и поэтому в коде всякие send_emails if Rails.env.production? меняется на send_emails if Settings.app.emails.enabled
Это конечно решение, но имхо довольно радикальное.  Не получается что ты при этом часть логики приложения утаскиваешь в инфраструктуру?
источник

АШ

Алексей Шеин... in Saint P Ruby Community
логика вся остается в приложении
источник

АШ

Алексей Шеин... in Saint P Ruby Community
а в инфраструктуре я управляю тем, что я хочу включить или нет
источник

АШ

Алексей Шеин... in Saint P Ruby Community
если у меня на стейдж сервере нет почты или я не хочу ее там отправлять, я просто выключаю SETTINGS__SEND_EMAILS=false и все
источник

АШ

Алексей Шеин... in Saint P Ruby Community
и приложение не меняется
источник