Подход с учетом среды на клиента плохо масштабируется. Gemfile
определенно не место для хранения клиентских настроек. Также его сложнее проверить.
Если вам нужно сильное разделение (отдельные db, рабочие и т.д. c.) - я бы все равно go с одной production
средой:
- имеет файл конфигурации, в котором есть настройки для всех ваших клиентов (включенные функции и т.д. c.):
hospital1:
name: Imaginary Medical Center
address: Nowhere st. 0
features:
cool_notifications: true
feature2: false
hospital2:
name: ObfuscatedView Commutinu Hospital
features:
feature1: false
позже он может быть преобразован в административную базу данных
вместо среды передайте переменную ENV с идентификатором клиента (например,
HOSPITAL_NAME=hospital1 rails server -e production
) и создайте одноэлементный объект, который загружает эту конфигурацию при вызове все движки могут быть в gemfile, но с
require: false
и вы можете загружать их только в application.rb (сразу после
Bundler.require
), если соответствующая функция включена
Также посмотрите apartment gem , если вы можете разрешить какой-либо ресурс совместное использование (как веб-работники). Вам нужно будет добавить поддержку нескольких доменов в свое приложение и переключатели функций, но будет еще проще справиться с растущим числом клиентов (и сэкономить ресурсы сервера, скорее всего, ни один из ваших клиентов не создает высокой устойчивой нагрузки)