Настройка: хост для разных промежуточных серверов с одной «промежуточной» средой в Rails 3.1 - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть 3 отдельных промежуточных сервера, настроенных в Капистрано (и может иметь больше в некоторый момент) Например:

staging.example.com
staging2.example.com
staging3.example.com

Capfile для каждого определяет одну и ту же среду:

set :rails_env, 'staging'

... и в `config / environment / staging.rb мне пришлось определить параметры URL по умолчанию:

config.action_mailer.default_url_options = { host: 'staging.example.com' }

К сожалению, это в конечном итоге приводит к использованию не того сервера. Например, при тестировании на staging2 вы можете получить электронное письмо с установленным в URL «staging» ... щелкните по нему, не задумываясь, и вы попадете не на тот сервер.

Я не хотел добавлять отдельный файл среды для каждого промежуточного сервера, поскольку в какой-то момент их может быть довольно много, и это действительно единственное изменение, которое отличается для каждого сервера, поскольку это имя хоста.

Есть ли способ обойти это без использования отдельного файла среды для промежуточного хоста? Можно ли использовать настройку Capistrano :web в качестве URL хоста?

role :web, "staging2.example.com"

Ответы [ 3 ]

1 голос
/ 04 ноября 2011

Может быть, вы можете использовать cap для редактирования файла staging.rb во время развертывания. Либо используя sed для редактирования имени хоста, либо просто добавьте строку action_mailer в конец.

Другой вариант: убедитесь, что ваши имена хостов установлены правильно, и дайте серверу заполнить его во время загрузки:

config.action_mailer.default_url_options = { host: `hostname` }

Я не думаю, что кепка настроена для обработки этого уникального случая.

0 голосов
/ 10 ноября 2011

Я закончил тем, что использовал переменную APP_CONFIG, загруженную из файла yml на каждом сервере, как описано в этом связанном вопросе: Повторный источник .bashrc при перезапуске единорога?

Кроме того, оригиналИдея для APP_CONFIG пришла от Railscast # 226.

0 голосов
/ 04 ноября 2011

Генерируете ли вы электронную почту в результате действия контроллера?Вы можете использовать заголовок HTTP_HOST в запросе и написать соответствующие ссылки в электронном письме.

...