尝试运行capdeploy:restart时为nil的未定义方法[]
我有一个 Rails 5.2 应用程序,并且使用上限 3.4.1 我们突然收到这个奇怪的错误:
[b35efe76] Phusion Passenger(R) 6.0.8
DEBUG [b35efe76] Finished in 0.305 seconds with exit status 0 (successful).
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@host.com: undefined method `[]' for nil:NilClass
尝试缩小范围,尝试重新启动时会发生这种情况,因为这是失败的行:
cap production deploy:restart
问题是,我如何去寻找哪个文件试图在 nil 值上调用 [] ?使用 --trace 运行 cap 没有任何价值,因为它只会给我内部错误 - 我的代码中没有任何内容。基本上,我如何找出什么是零?
还有一个线索,目前,我有一堆服务器,如果我在服务器 A 上运行 cap restart 命令,它会重新启动,在服务器 B 上,它会抛出这个错误,所以我猜服务器 A 上有一个环境变量,但是不是 B,但错误太不透明了,我不知道从哪里开始。
感谢您的帮助,凯文
回答
一个疯狂的猜测:我遇到了类似的问题,我可以通过升级capistrano-passenger到>= 0.2.1
看起来乘客从 6.0.7 到 6.0.8 的版本更改引入了问题。我看到你也在 6.0.8 上,所以它也可能影响你!
链接到 capistrano-passenger 问题