在安装新的宝石后,Slackistrano已经成功部署了Capistrano的应用程序,我们的部署在rake资产期间开始失败并出现以下错误:precompile或rake db:migrate tasks
cap aborted!
SSHKit::Command::Failed: rake stdout: Nothing written
rake stderr: Nothing written
/Users/pete/.rvm/gems/ruby-2.2.2/gems/sshkit-1.3.0/lib/sshkit/command.rb:94:in `exit_status='
这个错误显然不是很有帮助 .
如果我运行capistrano任务上限暂存资产:预编译,它将成功 .
那么这里发生了什么?
在封顶部署期间,还有一些其他解决SSHKit故障的解决方案,但其中大多数都是首次部署,并不适合我 .
1 回答
这是我如何找出解决方案(经过多次拔毛) .
我知道这可能是导致问题的新宝石 . 所以我进入了sshkit / command.rb的源代码,并输出了它试图在远程服务器上执行的命令 .
然后我登录到远程服务器并手动运行并获得以下输出:
所以,问题始于Slackistrano,但那么,什么呢?为什么Sinatra在那里?我不在我的应用程序中使用Sinatra .
好吧,我发现我的Gemfile中有一个gem只用于开发(mailcatcher)但是在Gemfile的 生产环境 部分 . 我删除了这个并成功重新部署 .
然而,显然存在一个更深层次的问题,因为似乎在sinatra和capistrano的“before”方法中出现了某种名称冲突,这种方法首先导致了这种情况 .
我发布这里是为了帮助其他人在Cap部署期间调试可能的SSHKit错误,也可能引导其他人在Sinatra和Capistrano之间发生奇怪的名称冲突 .