#ruby-on-rails #ruby #rbenv
Вопрос:
Прошло несколько часов, пока я пытаюсь понять ошибку, но я ее не понимаю.
Я попытался обновить свою версию ruby с 2.5 до 2.7.4
Я сначала обновил rbenv
brew
, а затем установил версию 2.7.4 и использовал rbenv rehash
Но теперь всякий раз , когда я запускаю rails c
или rails s
, у меня возникают следующие ошибки:
Loading development environment variables
- load /Users/myself/Work/my-app/.env
/Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require': dlopen(/Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal-ruby/gdal.bundle, 9): Symbol not found: __ZN6libdap5ErrorD1Ev
Referenced from: /usr/local/opt/gdal/lib/libgdal.28.dylib
Expected in: /usr/local/opt/libdap/lib/libdap.27.dylib
in /usr/local/opt/gdal/lib/libgdal.28.dylib - /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal-ruby/gdal.bundle (LoadError)
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `block in require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:299:in `load_dependency'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/dependencies.rb:332:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/bundler/gems/gdal-ruby-1820e1643725/lib/gdal.rb:2:in `<main>'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/bootsnap-1.8.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:74:in `block (2 levels) in require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:69:in `each'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:69:in `block in require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:58:in `each'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler/runtime.rb:58:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/bundler.rb:174:in `require'
from /Users/myself/Work/my-app/config/application.rb:9:in `<top (required)>'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:92:in `preload'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:157:in `serve'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:145:in `block in run'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `loop'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application.rb:139:in `run'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/gems/2.7.0/gems/spring-2.1.1/lib/spring/application/boot.rb:19:in `<top (required)>'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
from /Users/myself/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require'
Я пытался переустановить rbenv из brew, но это не сработало, я потратил несколько часов, пытаясь понять, что означает эта ошибка, но как новичок я ее не понимаю.
Что мне следует искать ?
РЕДАКТИРОВАТЬ: Это не из bootsnap, так как у меня та же проблема, если я удалю bootsnap
Комментарии:
1. Вы работаете
rails c
в рамках существующего проекта? Что произойдет, если вы начнете новый проект Rails?2. Да, я запускаю его из существующего проекта. Я просто пытаюсь создать новый проект rails, а затем запустить
rails c
его, и он работает правильно.3. Некоторые зависимости ваших существующих драгоценных камней, возможно, были обновлены во время (неявного)
brew upgrade
запуска. Вы можете попробовать переустановить все драгоценные камни вашего проекта с помощьюbundle pristine
4. Это сработало с
bundle pristine
добавлением его в качестве ответа, если хотите, тогда я могу подтвердить ваш ответ 🙂 Спасибо вам за вашу помощь
Ответ №1:
Некоторые зависимости ваших существующих драгоценных камней, возможно, были обновлены во время (неявного) brew upgrade
запуска при установке дополнительного программного обеспечения.
При установке самоцветов, которые используют зависимости библиотек (например, libgdal
в вашем случае), эти самоцветы иногда могут потребоваться повторно скомпилировать, если базовая библиотека изменилась несовместимыми способами.
Таким образом, обычная первая попытка исправить это, чтобы повторно установить затронутый драгоценный камень. Если вы используете bundler, вы можете переустановить все драгоценные камни вашего проекта, запустив
bundle pristine
Это должно гарантировать, что все ваши управляемые комплектами драгоценные камни используют последние версии ваших библиотек. Смотрите документацию bundle pristine
для получения подробной информации о том, что эта команда делает под капотом.