Rails:Bootsnap 无法加载

Jer*_*ome 7 ruby-on-rails bootsnap

今天启动 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)
Run Code Online (Sandbox Code Playgroud)

这里的其他问题似乎指向了一个解决方案,其中 gemfile 调用require: false已经指定

gem 'bootsnap', '>= 1.1.0', require: false
Run Code Online (Sandbox Code Playgroud)

应用程序服务器可以启动的唯一方法(目前处于开发模式)是从 boot.rb 注释掉以下行:

# require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
Run Code Online (Sandbox Code Playgroud)

在上次重启(昨天)和现在之间,boot.rb 和 Gemfile 都没有被修改。打开和关闭此行证明问题出在 bootsnap 上。

怎么了?到底是怎么回事?

Pro*_*ton 9

我在处理一个运行良好的 Rails 应用程序时遇到了这个问题。

问题是你的应用目录下的Bootsnap gemtmp目录对当前用户是不可写的,即当前用户没有权限写入你的应用目录下的Bootsnap gemtmp目录。

这是我解决它的方法

简单地删除该tmp目录在你的应用程序与超级用户权限的目录:

sudo rm -rf tmp
Run Code Online (Sandbox Code Playgroud)

不要重新创建tmp目录,这是浪费精力

只需启动您的应用程序tmp目录将再次自动创建:

rails s
Run Code Online (Sandbox Code Playgroud)

就这样。

我希望这有帮助


mat*_*iss 1

我在 Win10 上使用 WSL,几天前出现了一些重大更新,但没有像往常一样工作。据我了解,WSL 更改了文件夹权限等的一些设置。

由于我的项目位于下面,C:\sites看来 Bootsnap 需要拥有完整的权限C:\sites\mywebsite\tmp\cache\bootsnap-compile-cache

此 GitHub 问题中的回复表明该文件夹必须是可写的。所以基本上我必须授予我的 Win10 用户对我的C:\sites文件夹和子文件夹的完全访问权限。为此,我遵循了本教程如果由于某种原因这不能立即工作,请尝试删除“站点”文件夹的“只读”,例如,检查此建议

最重要的是 - 您必须拥有该cache文件夹的完整权限,以便 Bootsnap 可以在其中写入其文件夹和文件。

我希望这有帮助。