Рельсы: дифференциация постановки от производства - PullRequest
11 голосов
/ 12 августа 2010

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

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

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

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

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

Я бы хотел сделать это как можно более "ненастоящим".

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

Ответы [ 2 ]

24 голосов
/ 12 августа 2010

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

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

0 голосов
/ 12 августа 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...