не удается загрузить такой файл - 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
источник
- скачать последнюю версию sqlite3-ruby, https://github.com/sparklemotion/sqlite3-ruby
- распаковать пакет
построить
- запустить командную строку в извлеченном 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 приложение!
если верхний ответ не работает, исправление, которое я обнаружил, просто переходит в ваш 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:
- получить autoconf версию источников sqlite3 изhttps://www.sqlite.org/download.html.
- пуск префикса msys оболочки.
- в распакованном месте для вашего sqlite3 настройте статическую версию только для того, чтобы избежать сохранения DLL на пути:
./configure --disable-shared
. - построить и установить его:
make install DESTDIR=/c/dev/ruby/tmp
. Вы можете изменить каталог. - открыть командная строка windows и run
gem uninstall sqlite3 --all
чтобы удалить все существующие драгоценные камни sqlite3. - снова в командной строке 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
теперь вы закончили. Дайте мне знать, если проблема сохранится.