Size: a a a

Saint P Ruby Community

2020 May 18

АШ

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

АШ

Алексей Шеин... in Saint P Ruby Community
вот это пресловутое
  env :development, :parent => :production do
   ...
 end
источник

IN

Ivan Nemytchenko in Saint P Ruby Community
wi11son
тот ужасный момент, когда в энве намешаны фичефлаги, переменные окружения, конфиги приложения
у вас есть какие-то соглашения разделения всего этого добра?
источник

АШ

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

АШ

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

IN

Ivan Nemytchenko in Saint P Ruby Community
Алексей Шеин
имхо, приложение не должно знать о разных окружениях, об их количестве, за исключением test-окружения, может быть
ну ну тебя же есть environments/production.rb и дальше по списку
источник

АШ

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

АШ

Алексей Шеин... in Saint P Ruby Community
Ivan Nemytchenko
ну ну тебя же есть environments/production.rb и дальше по списку
с этим я тоже не согласен :)
источник

АШ

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

IN

Ivan Nemytchenko in Saint P Ruby Community
Алексей Шеин
а количество окружений, их наследование друг от друга, и т.п. должны храниться отдельно, где-нибудь в инфраструктуре, например, в ансибле
Эта штука не отменяет наличия порядка в инфраструктуре конечно. Только это разные уровни и разные задачи.
источник

w

wi11son in Saint P Ruby Community
Ivan Nemytchenko
у вас есть какие-то соглашения разделения всего этого добра?
если где-то по коду у тебя есть if ENV['SEND_SMS'], то это фичефлаг, и он должен лежать в сервисе фичефлагов. который может кормиться из любого источника, будь то база, ямл, редис, 3rd party
источник

IN

Ivan Nemytchenko in Saint P Ruby Community
wi11son
если где-то по коду у тебя есть if ENV['SEND_SMS'], то это фичефлаг, и он должен лежать в сервисе фичефлагов. который может кормиться из любого источника, будь то база, ямл, редис, 3rd party
Сервис фичефлагов?
источник

АШ

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

w

wi11son in Saint P Ruby Community
если где-то по коду у тебя ENV['AWS_CREDS'], то это самые натуральные переменные окружения, они в каждом окружении будут свои
источник

m

max in Saint P Ruby Community
Алексей Шеин
имхо, приложение не должно знать о разных окружениях, об их количестве, за исключением test-окружения, может быть
в репозитории у вас хранится не только приложение, но еще и что-то про инфраструктуру gitlab-ci, Capfile, .dotenv, .editorconfig` - что не имеет никакого отношения к "приложению"

и это ваша задача что бы "приложение"  ничего об этих файлах и настройках не знало и именно все было установлено и настроено через config/environments и/или initializers/*

тут - аналогично. есть этот config гем, который выполняет свою часть работы по наполнению себя, а дальше уже вы решаете какой конкретно раздел prod/dev/stage вы передатиде в приложение, и по-хорошему, приложение должно знать только о том что ему передали и никак не взаимодействовать с Config напрямую
источник

w

wi11son in Saint P Ruby Community
если по коду у тебя есть где-то ENV['CONTESTS'].include?('green'), то это конфиги приложения, и моожно сложтить в AppName.config.x.something
источник

w

wi11son in Saint P Ruby Community
Ivan Nemytchenko
Сервис фичефлагов?
PORO
источник

АШ

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

АШ

Алексей Шеин... in Saint P Ruby Community
config/initializers - еще куда ни шло, но вот config/environments мне не нравится совершенно
источник

АШ

Алексей Шеин... in Saint P Ruby Community
ну т.е. в моем понимании приложение должно только делать if Settings.my_feature.enabled и все
источник