我正在尝试在我正在处理的rails应用程序上为Capistrano 3编写以下代码。我收到的错误是粘贴在帖子标题上的消息。
196 namespace :swconfig do
197 desc "Install Bazaar xmllog plugin."
198 task :install_bzr_xmllog do
199 puts "Installing Bazaar xmllog..."
200 execute "rm -rf /home/deployer/.bazaar/plugins/xmloutput"
201 execute "mkdir -p /home/deployer/.bazaar/plugins && cd /home/deployer/.bazaar /plugins && bzr branch lp:~amujumdar/bzr-xmloutput/emit_authors xmloutput"
202 end
203
204 desc "Upgrade rack"
205 task :upgrade_rack do
206 puts "Upgrading rack to 1.5.2"
207 execute "gem install rack -v1.5.2"
208 end
209
210 end
我已经阅读了大量有关将卡皮斯特拉诺从2,Capistrano升级到其官方网站以及堆栈溢出的研究,但我不确定问题是什么。
因为语法来自Capistrano 2,'execute'关键字之前被标记为'run',当然这给了我错误Undefined方法'run'for main:Object。但是,将run替换为execute并不能解决错误。我也尝试过执行语法的这种变体。
196 namespace :swconfig do
197 desc "Install Bazaar xmllog plugin."
198 task :install_bzr_xmllog do
199 puts "Installing Bazaar xmllog..."
200 execute :rm, " -rf /home/deployer/.bazaar/plugins/xmloutput"
这仍然会产生相同的错误。根据Capistrano的官方网站Capistrano,正确的语法应该是上面的变化。但是,在我发现的这篇文章Writing Capistrano Tasks中,执行语法不是以符号格式编写的。
最后,因为找到标准,一致且可靠的Capistrano语法是如此的折磨,我已经没有选择/导致试图解决这个问题。有没有人有任何想法可能是什么问题?谢谢你的帮助。
答案 0 :(得分:4)
似乎capistrano可能设置了更有用的错误消息。这对我有用:
for cap2:
namespace :deploy do
desc "Generate static error pages"
task :generate_static_error_pages do
run "cd #{current_path}; RAILS_ENV=production rake app:generate_static_error_pages"
end
end
for cap3:
namespace :deploy do
desc "Generate static error pages"
task :generate_static_error_pages do
on roles(:web) do
execute "cd #{current_path}; RAILS_ENV=production rake app:generate_static_error_pages"
end
end
end
这两个变化: