2011-11-22 79 views
3

cap deploy:migrate突然停止工作,一個錯誤:Capistrano的錯誤

*** [err :: 1.2.3.4:2222] bash: -c: line 1: syntax error: unexpected end of file command finished in 559ms 
failed: "/usr/local/bin/rvm-shell '[email protected]' -c 'cd /home/user/app/releases/20111122182205 && #<Capistrano::Configuration::Namespaces::Namespace:0xa6a0cc> RAILS_ENV=staging db:migrate'" on 1.2.3.4:2222 

顯然錯誤有事情做這個不是一個有效的命令... #<Capistrano::Configuration::Namespaces::Namespace:0xa6a0cc>

但我不知道最近可能導致它變化的是什麼。有任何想法嗎?

更新

我什麼都不知道的我的代碼更改,但我可能已經與環境撥弄。我想知道這是否可能是由於不同的寶石和版本的卡皮斯特拉諾。看起來好像有和沒有捆綁EXEC調用之間存在不同的版本。

回答

11

我有這個完全相同的問題,在我的情況下,它與命名空間和變量之間的衝突有關。基本上,事情的經過是:

集:用戶,「一些用戶

命名空間:用戶做; end

因此,無論何時我試圖引用用戶變量,我都會得到命名空間。我改變了命名空間:用戶名稱空間:用戶,它都很好。

最終的解決方案(由OP編輯)

這幾乎是在錢上。資產管道代碼包括一個#{rake}的調用,這與我在遠程服務器上運行代碼的配方衝突,該代碼有一條namespace :rake行。改變我的rake命名空間解決了這個問題。

+1

+1。我也有同樣的事情發生。我在我的deploy.rb中有一個名爲rake的命名空間,用於遠程執行rake任務。我將它改爲:raketask –

+0

@EricGoldberg到底發生了什麼事。我喜歡美學上擁有'rake'命名空間,但我想它必須去。 – evanrmurphy

-1

#{Capistrano::Configuration::Namespaces::Namespace:0xa6a0cc}

+0

不,這是輸出,因爲有什麼與capistrano呼籲to_s和輸出對象id而不是正確的命令,但我不知道在哪裏或爲什麼。 – DGM

+0

如果那樣,那麼沒有'deploy:migrate'的定義,我們什麼都不會做。 – Hauleth

+0

這不是我寫的東西,它是capistrano的一部分,我猜... – DGM

0

文件意外錯誤的端部典型地由不關閉的塊或運營商如括號發生。或者您可能會錯過命名空間塊中的do。你應該仔細檢查你的語法是否有任何可能沒有被正確關閉的東西。

如果您在校對配置後未發現錯誤,那麼如果您可以使用deploy.rb配置更新問題將會有所幫助。

+0

有趣,但是我的源代碼管理顯示自上次工作以來沒有任何變化。 – DGM