我使用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'但任务没有执行。
如何使用rvmrc trust 3执行
在运行cap deploy任务之前,有什么方法可以查看部署任务流吗?
谢谢!
发布于 2014-07-21 08:31:49
我终于知道该怎么做了。问题是,使用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'发布于 2015-07-23 18:10:03
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'https://stackoverflow.com/questions/23544739
复制相似问题