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 上。
怎么了?到底是怎么回事?
我在处理一个运行良好的 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)
就这样。
我希望这有帮助
我在 Win10 上使用 WSL,几天前出现了一些重大更新,但没有像往常一样工作。据我了解,WSL 更改了文件夹权限等的一些设置。
由于我的项目位于下面,C:\sites看来 Bootsnap 需要拥有完整的权限C:\sites\mywebsite\tmp\cache\bootsnap-compile-cache
此 GitHub 问题中的回复表明该文件夹必须是可写的。所以基本上我必须授予我的 Win10 用户对我的C:\sites文件夹和子文件夹的完全访问权限。为此,我遵循了本教程如果由于某种原因这不能立即工作,请尝试删除“站点”文件夹的“只读”,例如,检查此建议
最重要的是 - 您必须拥有该cache文件夹的完整权限,以便 Bootsnap 可以在其中写入其文件夹和文件。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
6574 次 |
| 最近记录: |