无法启动 Rails Console - 无法加载此类文件“ext/save-history.rb”

问题描述 投票:0回答:1

我最近将 Rails 7.0.4 应用程序从 Ruby 2.7.5 升级到 3.2.2

一切正常 - 我可以运行服务器、测试等 - 但我无法启动 Rails 控制台。当我启动控制台时,我收到此错误:

/Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/bootsnap-1.13.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require': cannot load such file -- /Users/my-user-name/src/ext/save-history.rb (LoadError)

我首先认为这是一个 Bootsnap 错误,但是当我在

require 'bootsnap/setup'
中注释掉
config/boot.rb
时,我得到了一个类似但不同的错误:

/Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/dead_end-1.1.6/lib/dead_end/auto.rb:30:in `require': cannot load such file -- /Users/my-user-name/src/ext/save-history.rb (LoadError)
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/dead_end-1.1.6/lib/dead_end/auto.rb:30:in `require_relative'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb/extend-command.rb:368:in `save_history='
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb/context.rb:137:in `initialize'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb.rb:473:in `new'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb.rb:473:in `initialize'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb.rb:419:in `new'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/3.2.0/irb.rb:419:in `start'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:70:in `start'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:19:in `start'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/commands/console/console_command.rb:102:in `perform'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/command/base.rb:87:in `perform'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/command.rb:48:in `invoke'
    from /Users/my-user-name/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/railties-7.0.4/lib/rails/commands.rb:18:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

这似乎是 Irb 会话尝试加载库以保存我的 Irb 历史记录的问题?我尝试卸载 ruby 并重新安装,使用捆绑器重新安装所有 gem,似乎没有任何变化。

我不知道问题是什么 - 这是 ruby 问题、捆绑器问题、其中一个 gem 的问题还是 OSX 问题?

我正在使用

  1. RBenv 1.2.0
  2. 红宝石3.2.2
  3. 捆绑器 2.3.20
  4. 红宝石 3.4.10
  5. Rails 7.0.4

值得注意的是,我部署到 Heroku,并且可以毫无问题地启动 Heroku 控制台。

ruby-on-rails ruby rubygems bundler
1个回答
0
投票

死胡同 -> 语法建议

这很可能会转移注意力,但您可以尝试从

dead_end
gem 迁移。

dead_end
宝石已重命名为
syntax_suggest
,并且是
ruby3.2
中的默认宝石。 请参阅自述文件部分以进行重命名。尝试升级一下看看是否有帮助。

尝试将
irb
添加到您的
Gemfile

提到的文件已在此 pr 和版本 irb 1.7.2 上删除。升级您的 irb 可能会解决您的问题。

gem 'irb', '~> 1.4'

bundle install

除了可以解决您的问题之外,它还会使您受益,因为

irb
在等待包含在下一个 ruby 版本中时会得到定期改进。

如果您仍然看到同样的错误

您可能想将这些详细信息添加到您的问题中

  • 您是否使用像
    ~/.irbrc
  • 这样的配置文件
  • 你尝试过跑步吗
    spring stop
  • 将已安装的 gems 作为文本文件链接,如 github gist
© www.soinside.com 2019 - 2024. All rights reserved.