今天启动Rails 5应用程序时,以下错误正在命中:
1: from /home/deploy/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/compile_cache/iseq.rb:37:in `load_iseq'
/home/deploy/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/compile_cache/iseq.rb:37:in `fetch':
Operation not permitted - bs_fetch:atomic_write_cache_file:chmod (Errno::EPERM)
这里的其他问题似乎指向了gemfile调用具有require: false
的解决方案,但已指定
gem 'bootsnap', '>= 1.1.0', require: false
应用程序服务器可以启动(暂时在开发模式下(的唯一方法是从boot.rb发表以下行:
# require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
在以前的重新启动(昨天(和当前时刻之间,boot.rb和gemfile均未修改。打开和关闭此线路证明了bootsnap的问题。
怎么了?发生了什么?
我在有时运行良好的Rails应用程序时经历了这个问题。
问题是,您的应用程序目录中的BootSNAP GEM tmp
目录对当前用户不是写作,也就是说,当前用户无权写入应用程序目录中的BootsNap GEM tmp
目录。
这是我解决的方式:
只需删除应用程序带有Superuser权利的目录中的tmp
目录:
sudo rm -rf tmp
不要再重新创建tmp
目录,这是浪费努力
只需启动您的应用程序,并且tmp
目录将自动创建:
rails s
仅此而已。
我希望这会有所帮助
我在win10上使用WSL,几天前有一些重大更新来了,没有像往常一样奏效的。据我了解,WSL更改了一些文件夹权限或其他设置。
由于我的项目位于C:sites
下,因此BootsNap似乎需要拥有C:sitesmywebsitetmpcachebootsnap-compile-cache
在此Github问题中回答表明该文件夹必须是可写的。因此,基本上,我必须为我的C:sites
和子文件夹提供全部访问权限。为此,我遵循了本教程,如果由于某种原因不起作用,请尝试删除您的"站点"文件夹的"无读",例如,Cheeck cheeck this建议
Buttom行是 - 您必须拥有该cache
文件夹的完整权利,因此BootsNap可以在其中写入其文件夹和文件。
我希望这会有所帮助。
我用一个docker容器碰到了这一点,其中导轨应用程序root目录是从主机上安装的卷。删除tmp
目录(每个Promise Preston的答案(无法解决问题,因为那时Rails无法创建它。
可能这个答案(或一个类似的答案(会导致那里正确的Docker-permissions解决方案,但是我被够了,只是将应用程序目录复制到容器中而不是安装到容器中。