在部署Rails应用程序时,我看到此错误:
@ app.route('/foo', methods=['POST'])
def foo ():
pass
这与捆绑程序1.16.1和1.17.1一起出现。我当前的解决方法是恢复到捆绑程序1.15.1,可以正常工作。
我进行了研究,发现了X / Open的根本原因,其中将不同的错误定义为EACCES和EROFS。 Ruby似乎坚持了这一点,并正确地将文件系统报告为只读,而bundler只处理(即抢救)EACCES,而不处理EROFS。
相应的代码为:
Errno::EROFS: Read-only file system @ rb_sysopen - /ext/gems/2.3/bundler.lock
/ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `initialize'
/ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `open'
/ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `lock'
/ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/installer.rb:73:in `run'
...
因此,似乎代码明确规定了无法写入目标位置的情况,并且仅忽略了处理EROFS的情况。 我试图在1.16.1版本发布后告诉开发人员,但没有任何反应。处理此问题的正确方法是什么?