2014-08-30 49 views
2

我正在嘗試在我正在開發的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的一般,但我不知道是什麼問題。

由於語法來自Capistrano 2,'execute'關鍵字先前被標記爲'run',當然這給了我主錯誤Undefined method'run'的錯誤。但是,將運行代入執行並不能解決錯誤。我也嘗試了這種執行語法的變體。

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語法是如此的考驗,我已經用盡了選擇/線索來嘗試解決這個問題。有沒有人有任何想法可能是什麼問題?謝謝你的幫助。

+2

Derp。我發現我的錯誤。舊的語法沒有在任務中指定roles關鍵字。 – 2014-08-30 17:56:19

回答

3

似乎像capistrano可能已經設置了一個更有幫助的錯誤消息。下面是我工作:

是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 

爲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 

兩個變化:

  • 運行成爲執行
  • 巢「執行'在角色(:網絡)'塊中排隊。
相關問題