2010-12-15 103 views
0

我運行的cap deploy失敗,我認爲這是由於格式問題。下面是一些輸出:capistrano失敗 - cap部署在哪裏定義?

* executing "rm -rf /var/www/cap-deploy/socialmit/releases/20101215141011/log /var/www/cap-deploy/socialmit/releases/20101215141011/public/system /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids &&\\\n  mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/public &&\\\n  mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/tmp &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/log /var/www/cap-deploy/socialmit/releases/20101215141011/log &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/system /var/www/cap-deploy/socialmit/releases/20101215141011/public/system &&\\\n  ln -s /var/www/cap-deploy/socialmit/shared/pids /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids" 

(很抱歉的格式。)

&&\\\n事情看起來真的很腥,確實傾銷他們到我的控制檯導致的'\ n以下的輸出:命令未找到。

WHere是cap deploy定義?看起來這個問題與它被定義爲沒有正確格式化的命令列表有關,導致無用的換行符被扔掉。但我找不到cap deploy的實際代碼來修復它。它似乎並不是特定於應用程序的東西,因爲它不在我的Capfile或Capfile引用的任何文件中。

回答

1

的問題是,一個名爲after_symlink一些用戶定義的任務必須被重新命名,並使用after("deploy:symlink", "deploy:new_name")語法符號鏈接後調用:

問題:

namespace :deploy do 
    desc "Symlink the upload directories" 
    task :after_symlink do 
    #run "mkdir -p #{shared_path}/uploads" 
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link" 
    end 
end 

錯誤(實際上是一個警告):

Deprecation Warning] Naming tasks with before_ and after_ is deprecated, please see the new before() and after() methods. (Offending task name was after_update_code) 
[Deprecation Warning] Naming tasks with before_ and after_ is deprecated, please see the new before() and after() methods. (Offending task name was after_symlink) 

正確的做這件事的方式:

namespace :deploy do 
    desc "Symlink the upload directories" 
    task :link_db do 
    #run "mkdir -p #{shared_path}/uploads" 
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link" 
    end 
end 

after("deploy:symlink", "deploy:link_db") 

\\\n業務問題是我的錯誤診斷。很明顯,執行得很好。

0

部署任務在gem here中定義。

我想說這很可能不是問題。部署失敗時會出現什麼錯誤?

+0

感謝您的鏈接。事實上,這個問題與capistrano不執行symlinking命令有關,因爲它被定義爲after_symlink(約定改變)。在下面的解決方案中添加更多細節。 – unsorted 2010-12-16 07:22:02