首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails: Bootsnap无法加载

Rails: Bootsnap无法加载
EN

Stack Overflow用户
提问于 2019-08-03 14:29:28
回答 3查看 7.2K关注 0票数 7

当今天启动一个rails 5应用程序时,遇到了以下错误:

代码语言:javascript
复制
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,但已经指定了

代码语言:javascript
复制
gem 'bootsnap', '>= 1.1.0', require: false

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

代码语言:javascript
复制
# require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

在上一次重新启动(昨天)和当前时刻之间,boot.rb和Gemfile都没有修改。打开和关闭此行证明问题出在bootsnap上。

怎么啦?怎么一回事?

EN

回答 3

Stack Overflow用户

发布于 2020-04-16 22:21:15

当我在一个运行良好的Rails应用程序上工作时,我遇到了这个问题。

问题是您的应用程序目录中的Bootsnap gem tmp目录对当前用户是不可写的,即当前用户没有权限写入您的应用程序目录中的Bootsnap gem tmp目录。

这里是我如何解决它的

只需使用超级用户权限删除应用程序目录中的tmp目录:

代码语言:javascript
复制
sudo rm -rf tmp

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

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

代码语言:javascript
复制
rails s

就这样。

我希望这对有帮助

票数 9
EN

Stack Overflow用户

发布于 2019-08-17 16:26:20

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

由于我的项目位于C:\sites下,因此Bootsnap似乎需要拥有对C:\sites\mywebsite\tmp\cache\bootsnap-compile-cache的完全权限

this GitHub issue中回复建议文件夹必须是可写的。因此,基本上我必须授予我的Win10用户对我的C:\sites和子文件夹的完全访问权限。为了做到这一点,如果由于某些原因不能立即工作,我遵循了this tutorial,试着删除你的“站点”文件夹的“只读”,例如,cheeck this suggestion

但关键的一行是-您必须拥有该cache文件夹的完全权限,以便Bootsnap可以在其中写入其文件夹和文件。

我希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2021-02-20 12:34:28

我在Docker容器中遇到了这种情况,其中Rails应用程序根目录是从主机挂载的卷。删除tmp目录(每个Promise Preston's answer)并没有解决问题,因为这样Rails就不能创建它了。

也许this answer (或类似的)会导致正确的Docker权限解决方案,但我受够了,只是将应用程序目录复制到容器中,而不是挂载它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57335998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档