не удается загрузить такой файл - sqlite3/sqlite3 native (LoadError) на ruby on rails

когда я пытаюсь настроить базовую установку и инициализацию сервера с помощью Rails 4.0.0 на Ruby 2.0.0, я сталкиваюсь со следующим сообщением об ошибке.

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Как я могу избежать этого сообщения об ошибке и продолжить?

12 ответов


найдите файл sqlite3 gemspec. Один из примеров -/usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Windows: C:\Ruby21\lib\ruby\gems.1.0\specifications.

вы должны настроить в соответствии с вашим путем Rubygem и версией sqlite3. Отредактируйте файл и найдите следующую строку

s.require_paths=["lib"]

изменить на

s.require_paths= ["lib/sqlite3_native"]

см.:https://stackoverflow.com/a/39136421/6755206

к счастью, вам не нужно переключаться на ruby 2.0
есть решение этой проблемы, после бесконечных попыток...

https://github.com/hwding/sqlite3-ruby-win


шаги

Pre

  • gem uninstall sqlite3 --all

источник

построить

  • запустить командную строку в извлеченном dir
  • убедитесь, что у вас установлен компилятор C и добавлен в PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • вы найдете dir с именем " pkg " сгенерированный

установить

  • enter dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' - это код версии)

Регистрация

  • irb
  • require 'sqlite3'

С тянуть запрос #229 был объединен, sqlite3 может быть установлен на git: ключ. Можно легко использовать sqlite3 через это дополнение в вашем Gemfile :

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

это работает на RubyInstaller-2.4 и новее. Он автоматически устанавливает необходимый пакет pacman mingw-w64-x86_64-sqlite3 при выполнении bundler install.

есть еще несколько подсказок для Rails на окнах в чаво RubyInstaller2.


никакая компиляция источников или загрузка предварительно скомпилированных библиотек не решит эту проблему, поверьте, я пробовал все, проблема лежит где-то еще. Вот как это работает на Windows:

bundle update sqlite3

вы, вероятно, получите еще одну аналогичную ошибку после этого в отношении nokogiri, исправьте ее с помощью команды:

bundle update nokogiri

наслаждайтесь Ruby приложение!


удаление и переустановка драгоценного камня sqlite3 работали для меня.

gem uninstall sqlite3

bundle

просто отредактируйте Gemfile и добавьте gem 'sqlite3', platform: :ruby.


если верхний ответ не работает, исправление, которое я обнаружил, просто переходит в ваш Gemfile и добавляет номер версии 1.3.11 (вместо 1.3.9) сразу после sqlite3. Таким образом, строка в файле должна выглядеть так:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'

Это случилось и со мной. Оказалось, что я изначально установил SQLite 1.3.10, но затем скопировал некоторые драгоценные камни из проекта Rails tutorial screencasts, и в нем был указан SQLite 1.3.9. Потом я получил ту же ошибку, что и ты. Я изменил его обратно на 1.3.10, и он работал.

(Это на Windows 7. Я запускал учебник по скринкасту в Cloud9 IDE).


это единственное решение, которое сработало для меня, выведенное из это сообщение о выпуске GitHub:

  1. получить autoconf версию источников sqlite3 изhttps://www.sqlite.org/download.html.
  2. пуск префикса msys оболочки.
  3. в распакованном месте для вашего sqlite3 настройте статическую версию только для того, чтобы избежать сохранения DLL на пути: ./configure --disable-shared.
  4. построить и установить его: make install DESTDIR=/c/dev/ruby/tmp. Вы можете изменить каталог.
  5. открыть командная строка windows и run gem uninstall sqlite3 --all чтобы удалить все существующие драгоценные камни sqlite3.
  6. снова в командной строке windows, построить и установить sqlite3 gem:gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib. Эти каталоги include и lib могут отличаться, поэтому сначала проверьте.

Я использую Ruby версии 2.5.1 и Rails версии 5.2.0 в Windows 10.


у меня была такая же ошибка при обновлении версии Ruby в 2.5.Х. я отслеживал с rails task --trace что sqlite3 недоступен для версии 2.5, чем я меняю свой GemFile gem" sqlite3 " на "sqlite3-ruby", после того, как я удаляю gem" sqlite3 " и, наконец, я запускаю bundle install.

Я не знаю, в чем причина... Я читал, что" sqlite3 " пока недоступен для ruby 2.5, но я не уверен.


это сработало для меня:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

ЛУЧШАЯ ОФИЦИАЛЬНАЯ УСТАНОВКА

Im с использованием rails 5.2.1p57, Windows 10 Просто запуск следующих строк sloved проблема

gem uninstall sqlite3

и удалить все установленные версии. снова выполните следующую команду

gem install sqlite3 --platform=ruby

теперь вы закончили. Дайте мне знать, если проблема сохранится.