我有一个项目正在尝试使用 ruby 3(以前使用 2.7.2 运行),但无法完成。
使用 ruby 版本更新我的 gemfile 并运行后bundle,我在尝试访问时收到此错误rails c:
/home/rwehresmann/.rvm/gems/ruby-3.0.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': cannot load such file -- webrick/httputils (LoadError)
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加 webrick gem 以查看会发生什么,结果是rails c卡住了。
这是我的 gemfile:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '3.0.0'
gem 'rails', '~> 6.0.1'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', ">= 4.3.3"
gem 'aws-sdk-s3', '~> 1'
gem 'http', '~> 4.3.0'
gem 'redis', '~> 4.1.3'
gem 'jwt', '~> 2.2.1'
gem 'pundit', '~> 2.1.0'
gem 'blueprinter', '~> 0.23.0' …Run Code Online (Sandbox Code Playgroud) 今天启动 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 上。
怎么了?到底是怎么回事?
我有一个使用 bootsnap 的 Rails 应用程序,我目前无法运行该应用程序,因为我从 bootsnap 收到错误。
错误是
/Users/path/.rbenv/versions/2.7.3/lib/ruby/gems/2.7.0/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in require: no implicit conversion of String into Integer (TypeError)
这是Kernel_require.rb失败的方法。
def require_with_bootsnap_lfi(path, resolved = nil)
Bootsnap::LoadPathCache.loaded_features_index.register(path, resolved) do
require_without_bootsnap(resolved || path)
end
end
Run Code Online (Sandbox Code Playgroud) 我有一个运行良好的 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)
但还没有成功,因为我仍然遇到同样的问题。任何形式的帮助将不胜感激。谢谢。