从Capistrano设置PassengerRuby路径

时间:2014-03-03 16:32:09

标签: ruby-on-rails ruby capistrano passenger rvm-capistrano

我正在使用Capistrano将多个Rails应用程序部署到Apache和Passenger 4服务器。我也在使用rvm-capistrano gem在服务器上安装新版本的Ruby。

据我了解,每个VirtualHost定义中的PassengerRuby行指定应该为每个应用程序使用哪个Ruby和哪个gemset。当应用程序从Ruby 1.9.3-p374升级到Ruby 1.9.3-p545时,必须将此VirtualHost定义更改为指向新版本的Ruby,对吗?

当Capistrano部署应用程序时,有没有办法更自动地完成这项工作?它可能以某种方式更改Apache配置文件,或者定义Ruby路径以间接指向Capistrano可以更改的其他配置。该怎么做?

1 个答案:

答案 0 :(得分:1)

我会写一个配方来管理Passenger配置文件。基本模式如下:

  1. 创建配置文件的erb版本,用运行配方时要替换的erb脚本标记替换动态变量
  2. 编写使用erb模板的配方并将生成的文件上传到服务器
  3. 在ruby升级任务rvm:whatever_task_you_use_to_install_upgrade
  4. 之后调用此配方

    这个模式在这个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