【问题标题】:How to run rvmrc trust command using Capistrano 3如何使用 Capistrano 3 运行 rvmrc trust 命令
【发布时间】:2014-05-08 14:29:01
【问题描述】:

我使用 Capistrano 3,需要运行 rvmrc trust 命令来部署。

我将此代码添加到我的 deploy.rb

namespace :rvm do
  task :trust do
   execute :rvm, "rvmrc trust #{fetch(:current_release)}"
  end
end

after 'deploy:updated', 'rvm:trust'

但是任务没有执行。

如何使用Capistrano 3执行rvmrc trust

在运行cap deploy 任务之前有什么方法可以查看部署任务流程?

谢谢!

【问题讨论】:

    标签: ruby-on-rails deployment rvm capistrano3


    【解决方案1】:

    我终于知道该怎么做了。问题是使用 release_path 它返回当前路径、符号链接而不是实际路径。所以我开始搜索互联网。

    # file: lib/capistrano/tasks/rvmrc.cap
    namespace :rvmrc do
      desc "Trust rvmrc file" 
      task :trust do
          on roles(:app) do
            releases = capture("ls #{File.join(fetch(:deploy_to), 'releases')}")
          if this_host_last_release = releases.split("\n").sort.last
              execute "~/.rvm/bin/rvm rvmrc trust #{releases_path}/#{this_host_last_release}"
          end
        end
      end
    end
    
    # file: deploy.rb, in the end
    after :finishing, 'rvmrc:trust'
    

    【讨论】:

      【解决方案2】:

      capistrano-3.4.0 的更新解决方案:

      # file: lib/capistrano/tasks/rvmrc.rake
      namespace :rvmrc do
        desc "Trust rvmrc file" 
        task :trust do
          on roles(:all) do
            command = "rvmrc trust #{release_path}/#{fetch(:current_revision)}"
            execute :rvm, command
          end
        end
      end
      before 'deploy:set_current_revision', 'rvmrc:trust'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-28
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多