Rails:NameError:未初始化的常量 Bootsnap::CompileCache::ISeq

Pro*_*ton 1 ruby ruby-on-rails bootsnap

我有一个运行良好的 Ruby on Rails 应用程序。今天,我给它添加了一些功能,然后在开发环境中启动了应用程序,启动良好,没有错误。但是当我尝试在浏览器上访问该应用程序时,我遇到了以下错误:

NameError: 未初始化的常量 Bootsnap::CompileCache::ISeq>)

我尝试将 Bootsnap gem 更新到最新版本:

gem 'bootsnap', '>= 1.4.6'
Run Code Online (Sandbox Code Playgroud)

删除了Gemfile.lock文件

rm -rf Gemfile.lock
Run Code Online (Sandbox Code Playgroud)

然后运行 ​​bundle update 命令来更新 gems

bundle update
Run Code Online (Sandbox Code Playgroud)

但还没有成功,因为我仍然遇到同样的问题。任何形式的帮助将不胜感激。谢谢。

Pro*_*ton 5

我终于弄明白了。我不必更新Bootsnap gem。

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

这是我解决它的方法

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

sudo rm -rf tmp/cache/bootsnap-load-path-cache
sudo rm -rf tmp/cache/bootsnap-compile-cache
Run Code Online (Sandbox Code Playgroud)

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

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

rails s
Run Code Online (Sandbox Code Playgroud)

如果在此之后您遇到此错误:

权限被拒绝@ apply2files

然后按照这里的解决方案:Rails:“Permission denied - /tmp/cache/assets/development/sprockets/

就这样。

我希望这有帮助