Установите путь PassengerRuby от Capistrano

Я использую Capistrano для развертывания нескольких приложений Rails на сервере Apache и Passenger 4. Я также использую гем rvm-capistrano для установки новых версий Ruby на сервер.

Насколько я понимаю, строка PassengerRuby внутри каждого определения VirtualHost указывает, какой Ruby и какой гемсет следует использовать для каждого приложения. Когда приложение обновляется, скажем, с Ruby 1.9.3-p374 до Ruby 1.9.3-p545, это определение VirtualHost необходимо изменить, чтобы оно указывало на новую версию Ruby, правильно?

Есть ли способ сделать это более автоматически, когда Capistrano развертывает приложение? Это может быть каким-то образом измененные файлы конфигурации Apache или определение пути Ruby для косвенного указания через какую-либо другую конфигурацию, которую Capistrano может изменить. Как это сделать?


person Daniel Ashton    schedule 03.03.2014    source источник


Ответы (1)


Я бы написал рецепт для управления конфигурационным файлом Passenger. Основной шаблон выглядит следующим образом:

  1. Создайте erb-версию вашего файла конфигурации, заменив динамические переменные тегами сценария erb, которые будут заменены во время запуска рецепта.
  2. Напишите рецепт, который использует шаблон erb и загружает полученный файл на ваш сервер.
  3. Вызовите этот рецепт после задачи по обновлению ruby ​​rvm:whatever_task_you_use_to_install_upgrade

Этот шаблон очень хорошо проиллюстрирован в этом RailsCast: http://railscasts.com/episodes/337-capistrano-recipes?view=asciicast

Или есть довольно много примеров рецептов шапки для установки и управления Passenger. Здесь используется не erb, а встроенный текст, который записывается в конфигурацию Passenger (см. строку 39): https://github.com/nesquena/cap-recipes/blob/master/lib/cap_recipes/tasks/passenger/install.rb

person steakchaser    schedule 03.03.2014