У меня есть рабочий сервер, и подготовка разъединяют, в котором новые возможности тестируются прежде, чем переместить их в производство. Сервер подготовки физически отличается от производства один (различные хосты с различными URL), но он подражает ему как можно больше (т.е. те же пакеты, те же драгоценные камни, и т.д.).
Rails.env = 'production'
на обоих серверах.
Моя проблема состоит в том, что в некоторых случаях мне нужно другое поведение при подготовке, чем в производстве.
Например, новая возможность могла бы послать крупные электронные письма пользователям на производстве; но в то время как я тестирую его, мне отправили бы их в 'тестовый' почтовый ящик.
Что лучший способ состоит в том, чтобы обнаружить сервер, в котором я?
Я хотел бы сделать это максимально "raily".
Большое спасибо.
Обычно поэтому вы должны использовать разные среды. Фактически, промежуточная среда обычно очень близка к производственной, но с отключенными вещами, такими как настоящие электронные письма.
Вы не ограничены разработкой / тестированием / производством - вы можете работать в среде с любым именем. Просто создайте файл config / environment / staging.rb, установите там нужные значения и запустите приложение с RAILS_ENV = staging - вот и все. Таким образом, вы можете имитировать свою производственную среду, но при желании включать или выключать функции, если вы не хотите, чтобы они были активными, прежде чем вы действительно начнете работать.
Боюсь, этот ответ не очень полезен.
Способ railsy
заключается в том, чтобы среды различались только конфигурацией (хост ресурсов, база данных и т. Д.) Для разных сред. Так что другая база данных с пользователями, имеющими фиктивные или тестовые адреса электронной почты, была бы самым простым способом сделать это.
Если вы обычно клонируете из производственной среды, я рекомендую обновить электронную почту всех пользователей с помощью скрипта / dbconsole
или скрипта / консоли
или просто простого rake
задача.
И если вы хотите ограничить / контролировать функции, я бы порекомендовал сделать это через систему контроля версий, то есть развернуть различные версии.