2014-03-03 49 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