2014-03-03 38 views
0

我正在使用Capistrano將多個Rails應用程序部署到Apache和Passenger 4服務器。我也使用rvm-capistrano gem在服務器上安裝新版本的Ruby。從Capistrano設置PassengerRuby路徑

據我所知,每個VirtualHost定義中的PassengerRuby行指定了每個應用程序應該使用哪個Ruby和哪個gemset。當應用程序從Ruby 1.9.3-p374升級到Ruby 1.9.3-p545時,必須將此VirtualHost定義更改爲指向新版本的Ruby,對嗎?

當Capistrano部署應用程序時,有沒有辦法讓這種做法更加自動化?它可能以某種方式更改Apache配置文件,或者定義Ruby路徑以間接指向Capistrano可以更改的其他配置。這應該怎麼做?

回答

1

我會寫一個配方來管理Passenger配置文件。其基本模式如下:

  1. 創建配置文件的ERB版本,ERB腳本標記替換動態變量在配方運行
  2. 編寫使用ERB模板配方時要更換和生成的文件上傳到服務器
  3. 調用此配方rvm:whatever_task_you_use_to_install_upgrade

所示真的很好在這RailsCast這種模式的紅寶石升級任務後:http://railscasts.com/episodes/337-capistrano-recipes?view=asciicast

或者,安裝和管理Passenger的帽子食譜中有相當多的exmaples。這裏有一個不使用erb,而是將內聯文本寫出到Passenger配置中(見第39行):https://github.com/nesquena/cap-recipes/blob/master/lib/cap_recipes/tasks/passenger/install.rb