【问题标题】:Confused by RVM's instructions for Capistrano对 RVM 对 Capistrano 的说明感到困惑
【发布时间】:2011-08-06 16:12:59
【问题描述】:

努力让 RVM 与 Capistrano 和 Rails 3.1rc5 一起工作,但对我找到的说明感到困惑。

RVM 的网站提供 these instructions 说:

在新选项中,您可以执行以下操作(根据您的个人设置进行调整):

$:.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, 'ree@rails3'     # Or whatever env you want it to run in.

现在我假设他们希望在我们的 deploy.rb 文件的顶部有这个!?!我只是问,因为我没有在我见过的deploy.rb 中看到“$:.”,尽管很少。

以“$:.”开头的行具体是做什么的?它属于deploy.rb 还是其他地方?

【问题讨论】:

  • 似乎在使用他们创建的 rvm-capistrano gem 之后,它会建议您删除该行:RVM - Capistrano integration was extracted to a separate gem, install: 'gem install rvm-capistrano' and remove the '$LOAD_PATH.unshift' line

标签: ruby-on-rails ruby-on-rails-3 deployment capistrano


【解决方案1】:

$: 是一个特殊的 Ruby 变量,它等效于 $LOAD_PATH,这是 Ruby 在您使用 require 语句时搜索的路径。在其上调用.unshift(...) 会将提供的路径添加到加载路径的front

如果你只是调用了require 'rvm/capistrano' 而没有$:.unshift 语句,你会得到一个错误,因为默认情况下,RVM 的 Capistrano 库不在 Ruby 的加载路径中。您没有在其他 deploy.rb 文件中看到这一点的原因是,通常,唯一需要的库是 Capistrano 的,它们已经通过运行 cap deploy(或任何其他 cap 命令)包含在内。

我的deploy.rb 文件中包含完全相同的代码,而且效果很好。

【讨论】:

    【解决方案2】:

    我相信这需要在顶层,以便在任何调用之前设置它 - 即在捆绑之前,任何 rake 任务等。这对我来说一直是个问题。就我而言,我的 Web 服务器和应用服务器不一样,我不希望 rvm 在 Web 服务器上。

    当真正的解决方案相当容易时,它也似乎有点黑魔法。更新代码后,在 .rvmrc 文件中设置一个祝福的 gemset,不需要做任何其他事情。

    after "deploy:update_code", "deploy:rvm:setup"
    
    namespace :deploy do
      namespace :rvm do
        # Set up .rvmrc
        # Note, not using method described in:
        #   https://rvm.beginrescueend.com/integration/capistrano/
        # We want to use RVM only on the app server, so better to set up and bless an .rvmrc file
        task :setup, :roles => :app do
          run "cd #{latest_release}; rvm use 1.9.2@#{application} --rvmrc --create && rvm rvmrc trust"
        end
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多