0

我正在使用 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 可以更改的其他配置。这应该怎么做?

4

1 回答 1

1

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

  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 的cap recipes 的例子。这是一个不使用 erb,而是写入乘客配置的内联文本(参见第 39 行):https ://github.com/nesquena/cap-recipes/blob/master/lib/cap_recipes/tasks/乘客/安装.rb

于 2014-03-03T16:57:19.773 回答