导轨: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)

这里的其他问题似乎指向了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解决方案,但是我被够了,只是将应用程序目录复制到容器中而不是安装到容器中。

相关内容

  • 没有找到相关文章

最新更新