升级到Ruby 2.5.1之后的问题-“不兼容的库版本”

时间:2018-06-20 05:17:45

标签: ruby-on-rails ruby

使用Homebrew升级到Ruby 2.5.1后,在pg中创建数据库时遇到了问题。

当我第一次运行rake db:create时,耙被中止,并显示以下错误:

rake db:create 
rake aborted!
LoadError: incompatible library version - /Users/jp/.rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/bootsnap.bundle
/Users/jp/.rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
/Users/jp/.rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
/Users/jp/.rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'

我已经确认我正在运行该版本的Ruby:

ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

我还检查了我的Gemfile,并且安装了最新的Rails版本(rails (5.2.0))。

在Stack Overflow或其他地方未发现任何类似问题。知道从哪里开始吗?

2 个答案:

答案 0 :(得分:0)

这可能是pg gem版本的问题。在您的Gemfile中使用gem 'pg', '~> 0.21.0',然后执行bundle install。这将解决。

答案 1 :(得分:0)

在将Ruby应用程序从ruby 2.4升级到2.6之后,我只花了几个小时来解决一个非常类似的错误。我在MacOS Mojave上使用rbenv和bundler。

我卸载了大约十二个旧版本的红宝石并开始清理。这使我摆脱了问题中的确切错误。

这可能是矫kill过正,但对我有用:

列出所有已安装的ruby版本:

rbenv versions

卸载所有版本的Ruby。

rbenv uninstall 2.1
rbenv uninstall 2.1.9
etc.

安装所需的Ruby版本

rbenv install

bundle install

bundle install之后,我尝试运行我的应用程序,并收到许多这样的警告:

Ignoring binding_of_caller-0.8.0 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.8.0
Ignoring binding_of_caller-0.7.2 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.7.2
Ignoring bootsnap-1.4.6 because its extensions are not built.  Try: gem pristine bootsnap --version 1.4.6

那时,我无法运行bundle exec rake

% bundle exec rake
bundler: command not found: rake
Install missing gem executables with `bundle install`

运行bundle似乎成功,但是没有更新Gemfile.lock,也没有解决问题。

最后,将所有宝石恢复为原始状态即可解决问题:

gem pristine --all

我现在可以运行应用程序,耙等了。