Rails: отличие постановки от продакшена

У меня есть производственный сервер и промежуточный сервер, на котором тестируются новые функции перед их переносом в производственную среду. Промежуточный сервер физически отличается от производственного (разные хосты с разными URL-адресами), но он максимально его имитирует (то есть одинаковые пакеты, одинаковые драгоценные камни и т. Д.).

Rails.env = 'production' на обоих серверах.

Моя проблема в том, что в некоторых случаях мне нужно другое поведение при постановке, чем при производстве.

Например, новая функция может отправлять массовые электронные письма пользователям в процессе производства; но пока я тестирую это, я бы предпочел, чтобы они были отправлены на «тестовую» учетную запись электронной почты.

Как лучше всего определить сервер, на котором я нахожусь?

Хочется сделать это как можно более «весело».

Большое спасибо.


person kikito    schedule 12.08.2010    source источник


Ответы (2)


Как правило, именно поэтому вы должны использовать разные среды. Фактически, промежуточная среда обычно очень близка к производственной, но с отключенными вещами, такими как настоящие электронные письма.

Вы не ограничены разработкой / тестированием / производством - вы можете работать в среде с любым именем. Просто создайте файл config / environment / staging.rb, установите там нужные значения и запустите приложение с RAILS_ENV = staging - вот и все. Таким образом, вы можете имитировать свою производственную среду, но при желании включать или выключать функции, когда вы не хотите, чтобы они были активными, прежде чем вы действительно начнете работать.

person Chris Heald    schedule 12.08.2010
comment
Спасибо. Я закончил тем, что изменил среду (на самом деле относительно легко), и теперь все работает так, как задумано. - person kikito; 14.08.2010

Боюсь, этот ответ не очень полезен.

railsy способ состоит в том, чтобы среды различались только конфигурацией (хост актива, база данных и т. Д.) Для разных сред. Так что другая база данных с пользователями, имеющими фиктивные или тестовые адреса электронной почты, была бы самым простым способом сделать это.

Если вы обычно клонируете из производственной среды, я рекомендую обновлять электронные письма всех пользователей либо с помощью script/dbconsole, либо script/console, либо просто с помощью простой rake задачи.

И если вы хотите ограничить / контролировать функции, я бы рекомендовал сделать это через систему управления версиями, то есть развернуть разные версии.

person Swanand    schedule 12.08.2010