не вдається завантажити такий файл - sqlite3 / sqlite3_native (LoadError) в ruby ​​на рейки


84

Коли я намагаюся встановити базову інсталяцію та запуск сервера за допомогою 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>'

Як я можу уникнути цього повідомлення про помилку і продовжити далі?


на якій ОС ви це приміряєте?
Saifis

Здається, проблема з Windows. Рішення різні. Подивіться, чи це допоможе вам stackoverflow.com/a/6126062/2576857 .
Дудад

1
Але не здається, що він користується вікнами. Можливо, ця стаття допоможе.
Althaf Hameez

О так, / usr / local / etc, побачив це зараз, моє погано. З того, що я виявив, більшість людей, які мають цю проблему, були через sqlite exe та dll, а не у змінній PATH, але це траплялося лише з користувачами Windows. Я думаю, що надана вами стаття повинна вдарити цвяхом по голові, але давайте почекаємо і подивимось.
Дудад

Якщо Rails 4 і Ruby 2.1. - дивись сюди
discipleartem

Відповіді:


121

Знайдіть свій файл glitespeq sqlite3. Одним із прикладів є /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Вікна C:\Ruby21\lib\ruby\gems\2.1.0\specifications.

Вам слід налаштуватися відповідно до вашого шляху Rubygem та версії sqlite3. Відредагуйте файл вище та знайдіть наступний рядок

s.require_paths=["lib"]

змінити його на

s.require_paths= ["lib/sqlite3_native"]

7
Це фантастична помилка проблеми, яка не повинна існувати спочатку, враховуючи кількість користувачів Rails у Windows. Я хотів би знати, чому саме це працює, хоча ...

1
Це працювало для версії 1.3.9, але не було необхідним для версії 1.3.11. Я на Win7 x64.
Kidquick

3
Це вже представлено та помилка: Не вдалося завантажити 'active_record / connection_adapters / sqlite3_adapter'. Переконайтеся, що адаптер у config / database.yml є дійсним. Якщо ви використовуєте адаптер, відмінний від 'mysql2', 'postgresql' або 'sqlite3', додайте необхідний дорогоцінний камінь адаптера до Gemfile.
Стерлінг Діаз

3
наведена вище помилка з адаптером, здається, не піддається вирішенню, якщо зробити те, що пропонує hwding спочатку, заощадило б мені досить багато часу - знову ж таки, можливо, вони це виправлять у наступних випусках або виправлять у пакетах із накопиченням, як RailsInstaller ruby2.3.1 з devkit (mingw з інструментами побудови), rails5.0.0.1) ps неймовірно, що ця проблема все ще зберігається і через 2 роки - враховуючи те, що sqlite використовується за замовчуванням у додатку скелета за замовчуванням, і це шлях in guides.rubyonrails.org/getting_started.html
hello_earth

2
Два роки? Як щодо ТРИ роки?
Уоррен П

19

див .: https://stackoverflow.com/a/39136421/6755206

на щастя, вам не потрібно переходити на ruby ​​2.0
, є рішення цієї проблеми після нескінченних спроб ...

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


Кроки

Попередньо

  • gem uninstall sqlite3 --all

Джерело

Збірка

  • запустіть командний рядок у витягнутому папці
  • переконайтесь, що ваш компілятор C встановлений та доданий до PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • ви знайдете створену директорію з назвою 'pkg'

Встановити

  • введіть dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' - це код версії)

Перевірте

  • irb
  • require 'sqlite3'

1
Дякую @hwding. Це чудово працює! У моєму випадку, користувач Windows, здається, що дві версії sqlite3 (32 і 64 біти) були скомпільовані в 'pkg', але я щойно встановив 64-бітну (мій випадок).
aaossa

1
так, після багатьох спроб це єдиний спосіб, який спрацював .... інші люди ( reddit.com/r/rails/comments/30s1cz/… ) пропонують перейти на щось на зразок бродяги і взагалі пропустити Windows + Rails
hello_earth

1
Я підтверджую, що це єдине рішення, яке працює для Windows 10; спробував пару виправлень, але це єдине, що працює.
numediaweb

1
Я зробив відповідно до згаданих кроків, але не бачу жодної папки, створеної з цим іменем pkg.
Яшу Міттал

Працював у мене до того часу, you'll find a dir named 'pkg' generatedоскільки я ніде не бачив такого каталогу. Розв’язання @Edson Momm нижче працювало для мене.
MSC

19

Оскільки запит на витягування № 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.

У FAQ щодо RubyInstaller2 є ще кілька підказок щодо Rails для Windows .


1
Ця відповідь корисна для нових установників ruby ​​ruby ​​версії ruby 2.5.1p57 (редакція 2018-03-29 63029) та версії rails Rails 5.2.1
KTM

1
Тим часом PR був об’єднаний. Відповідно оновив свою відповідь.
Ларс Каніс,

Щоб обійти проблеми з SSL, я використав: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
Grabz,

13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

Це вирішило проблему для мене.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG це справжнє: D Тільки це працює для мене, Windows 10 страшний для RoR. Дуже дякую!
Користувач 987

Працював також у мене. Моя проблема почалася після оновлення з ruby ​​2.4 на ruby ​​2.6 у Windows 10.
knut

Це була відповідь і для мене на Win10 Ruby 2.6 (x64). Дякую!
vercingortix

Мені фактично доводилося робити це кілька разів. Здається, що будь-коли, коли я буду робити bundle install, щоб встановити новий дорогоцінний камінь, я знову зіткнуся з цією проблемою і мені потрібно буде повторити наведені вище дії.
vercingortix

9

Просто відредагуйте Gemfile і додайте gem 'sqlite3', platform: :ruby.


5

Жодне складання джерел або завантаження попередньо скомпільованих бібліотек не вирішить цю проблему, повірте, я все спробував, проблема криється десь в іншому місці. Ось як це працює на вікнах:

bundle update sqlite3

Ви, ймовірно, отримаєте ще одну подібну помилку після цієї щодо нокогірі, виправте її за допомогою команди:

bundle update nokogiri

Насолоджуйтесь своїм додатком Ruby!


4

Видалення та перевстановлення самоцвіту sqlite3 у мене спрацювало.

gem uninstall sqlite3

bundle


4

КРАЩИЙ ОФІЦІЙНИЙ ВСТАНОВЛЕННЯ

Я використовую рейки 5.2.1p57, Windows 10 Просто запуск наступних рядків вирішив проблему

gem uninstall sqlite3

та видаліть усі встановлені версії. знову виконайте наступну команду

gem install sqlite3 --platform=ruby

Ви закінчили. Повідомте мене, якщо проблема не зникне.


3

Якщо головна відповідь не працює, виправлення, яке я виявив, просто переходить до вашого Gemfile і додає номер версії 1.3.11 (замість 1.3.9) відразу після sqlite3. Тож рядок у вашому Gemfile тепер повинен читатися:

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

2

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

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


2

Щоб уникнути цієї помилки, переконайтеся, що gem sqlite3її додано до вашого Gemfile. Потім витягніть файли "exe" та "dll" із посилання для завантаження Sqlite до папки bin Ruby. Якщо проблема все ще залишається. Спробуйте це:

bundle update

gem uninstall sqlite3

Отримавши вибір між кількома версіями sqlite3, виберіть останню опцію "Усі версії". Введіть тут останній номер

Виберіть самоцвіт для видалення:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Усі версії
> 3 .
.
Якщо ви видалите цей самоцвіт, ці залежності не будуть виконані.
Продовжити видалення? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Це має спрацювати.

Прочитайте це посилання для отримання додаткових пояснень, якщо вищезгадане вам підходить.


1

Це траплялося і зі мною. З'ясувалося, що я спочатку встановив SQLite 1.3.10, але потім скопіював деякі дорогоцінні камені з проекту підручника Rails, і в ньому було перелічено SQLite 1.3.9. Тоді я отримав ту саму помилку, що і ви. Я змінив його назад на 1.3.10, і він спрацював.

(Це для Windows 7. Я запускав підручник з трансляції екрану в Cloud9 IDE).


1

Це єдине розроблене для мене рішення, отримане з цього допису про випуск GitHub :

  1. Отримайте версію autoconf версії sqlite3 з https://www.sqlite.org/download.html .
  2. Запустіть оболонку MSYS.
  3. В розпакованому місці для вашого sqlite3, налаштувати статичну версію тільки уникнути збереження DLL на PATH: ./configure --disable-shared.
  4. Побудувати і встановити його: make install DESTDIR=/c/dev/ruby/tmp. Ви можете змінити каталог.
  5. Відкрийте командний рядок Windows і запустіть, gem uninstall sqlite3 --allщоб видалити всі існуючі дорогоцінні камені sqlite3.
  6. Знову в командному рядку вікна, побудови та встановлення sqlite3 гем: 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. Вони містять каталоги включають і бібліотеки, і вони можуть бути різними, тому перевірте спочатку.

Я використовую Ruby версії 2.5.1 та Rails версії 5.2.0 у Windows 10.


та файл gemspec у вихідній папці Gem
Bilal Qadri

1

я знайшов це! я бачив це https://www.youtube.com/watch?v=lsrzvX0qzmA
я встановив: Версія Rails: 5.2.1 Версія Ruby: 2.5.3 (x64-mingw32) Sqlite версія 1.3.13
і у мене проблема. моє рішення:

  1. У вашій установчій папці, як C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    gems вас є папки: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Знайти файл
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Скопіюйте його в C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (можливо, папки не існують - створіть та вставити)

1

Оновлено

Додавання нижче до Gemfile, виправленого для мене: gem 'sqlite3', '1.4.0', платформи:: ruby


1

Змініть свій дорогоцінний камінь sqlite3 у Gemfile для цього:

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

Потім запустіть:

bundle install

0

Для користувачів OSX це може бути результатом використання менеджера рубінів (наприклад, rvm).

Якщо ви редагуєте свій ~ / .bash_profile і додаєте це:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

Ви можете обійти цю проблему. Перезапустіть Xcode перед спробою побудови знову.

Фактична проблема відстежується тут: https://openradar.appspot.com/28726736 ).

Повний кредит надходить на: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.