【问题标题】:Capistrano recipe to update gems on server before executing other dependent tasks?Capistrano 配方在执行其他相关任务之前更新服务器上的宝石?
【发布时间】:2012-02-25 00:20:25
【问题描述】:

我的 Capistrano 配方(漂亮的香草)失败了,因为服务器上的 gem 版本与 Gemfile 中的不匹配(我猜)。

我该如何解决这个问题?我认为服务器上的“捆绑更新”自动成为默认 Cap 配方的一部分? ...我一定是错的。如果有,如何添加?

背景信息:服务器上安装了系统范围的 RVM。但是 Cap 配方知道 gemfile 的名称,即ruby-1.9.3@myapp

在我的 deploy.rb 中,根据 RVM's site:

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require "rvm/capistrano"                  # Load RVM's capistrano plugin.
set :rvm_ruby_string, 'ruby-1.9.3@myapp'        # Or whatever env you want it to run in.
set :rvm_type, :system
...

【问题讨论】:

    标签: ruby-on-rails-3 rvm capistrano bundler


    【解决方案1】:

    捆绑器不是标准 capistrano 配方的一部分

    使用这个答案How do I manage bundled gems in a capistrano deployment?

    【讨论】:

    • 是的,我终于想通了……这是正确的答案,不幸的是,无论如何,对我来说,从文档中看一点也不明显。哦,正确的答案是,顺便说一句,require 'bundler/capistrano'deploy.rb 的顶部。
    【解决方案2】:

    我有相同的设置工作,只有我的配置也有这一行:

    set :rvm_path, '/usr/local/rvm'
    

    并且没有设置 :rvm_type 变量。

    【讨论】:

    • 你能指出我直接设置rvm_path 变量的文档吗?我找到的文档(上面的链接)建议将 something 设置为:$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
    • 我不得不进行一些搜索,但能够在rvm source code 中找到:rvm_path 变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多