Ruby on rails 未定义的方法';执行';对于main:Object
我正试图在我正在开发的rails应用程序上为Capistrano3编写以下代码。我收到的错误是粘贴在文章标题上的消息Ruby on rails 未定义的方法';执行';对于main:Object,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,我正试图在我正在开发的rails应用程序上为Capistrano3编写以下代码。我收到的错误是粘贴在文章标题上的消息 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/.baz
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以及堆栈溢出的研究,但我不确定问题出在哪里
由于语法来自Capistrano 2,“execute”关键字先前标记为“run”,这当然给了我main:Object的未定义方法“run”的错误。但是,将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的官方网站,正确的语法应该是上面的变体。然而,在我发现的这篇文章中,execute语法不是以符号格式编写的
最后,因为找到标准、一致和可靠的Capistrano语法是一项艰巨的任务,我已经没有了解决这个问题的选项/线索。有人知道问题出在哪里吗?感谢您的帮助。似乎capistrano可以设置一条更有用的错误消息。以下是对我有效的方法: 第二章:
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
第三章:
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
两个变化:
- 运行变为执行
- 在“on roles(:web)”块中嵌套“execute”行