【问题标题】:Set PassengerRuby path from Capistrano从 Capistrano 设置PassengerRuby 路径
【发布时间】:2014-03-03 16:32:09
【问题描述】:

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

【问题讨论】:

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


    【解决方案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

    或者,有很多关于安装和管理乘客的上限配方的示例。这是一个不使用 erb,而是写入到乘客配置中的内联文本(参见第 39 行):https://github.com/nesquena/cap-recipes/blob/master/lib/cap_recipes/tasks/passenger/install.rb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      相关资源
      最近更新 更多