【发布时间】:2014-05-28 09:38:30
【问题描述】:
我正在尝试“翻译” Capistrano 配方以部署 dynamic_sitemaps 以使用 Capistrano 3。
自述文件中建议的 sn-p 如下所示:
after "deploy:update_code", "sitemaps:create_symlink"
namespace :sitemaps do
task :create_symlink, roles: :app do
run "mkdir -p #{shared_path}/sitemaps"
run "rm -rf #{release_path}/public/sitemaps"
run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end
end
但这不适用于 Capistrano 3。我将此代码粘贴到 config/deploy.rb 中,我得到的第一个错误是:不知道如何构建任务 'sitemaps:create_symlink'` em>。
我在某处读到,在 Capistrano 3 中,必须在调用之前定义命名空间,所以我颠倒了块的顺序,首先定义 namespace,最后调用 after。我得到了 NoMethodError: undefined method `map' for :roles:Symbol`。
所以我将命名空间块重写为:
namespace :sitemaps do
task :create_symlink do
on roles(:web) do
run "mkdir -p #{shared_path}/sitemaps"
run "rm -rf #{release_path}/public/sitemaps"
run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end
end
end
现在我得到不知道如何构建任务'deploy:update_code',我不知所措。
【问题讨论】:
-
这个 update_code 是在哪里定义的?这是你自己的方法还是任务
-
显然
deploy:update_code是一个有效的 Capistrano 任务。
标签: ruby-on-rails ruby-on-rails-3 capistrano capistrano3