2011-11-22 58 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