nie można załadować takiego pliku - sqlite3 / sqlite3_native (LoadError) na ruby ​​na szynach

84

Kiedy próbuję skonfigurować podstawową instalację i inicjację serwera przy użyciu Rails 4.0.0 na Ruby 2.0.0, pojawia się następujący komunikat o błędzie.

/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>'

Jak mogę uniknąć tego komunikatu o błędzie i przejść dalej?

Penchala Reddy Audireddy
źródło
jaki system operacyjny to próbujesz?
Saifis
Wygląda na problem z systemem Windows. Rozwiązania są różne. Sprawdź, czy to wystarczy . Stackoverflow.com/a/6126062/2576857 .
Doodad
1
Ale nie wygląda na to, że używa okien. Może ten artykuł byłby pomocny.
Althaf Hameez
O tak, / usr / local / etc, widziałem to teraz, moja wina. Z tego, co znalazłem, większość ludzi ma ten problem z powodu sqlite exe i dll nie w zmiennej PATH, ale zdarzyło się to tylko użytkownikom systemu Windows. Myślę, że ten artykuł, który podałeś, powinien trafić w sedno, ale poczekajmy i zobaczmy.
Doodad
Jeśli Rails 4 i Ruby 2.1. - spójrz tutaj
uczniowie

Odpowiedzi:

121

Znajdź swój plik sqlite3 gemspec. Jednym z przykładów jest /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Okna C:\Ruby21\lib\ruby\gems\2.1.0\specifications.

Powinieneś dostosować zgodnie ze ścieżką Rubygem i wersją sqlite3. Edytuj plik powyżej i poszukaj następującego wiersza

s.require_paths=["lib"]

zmień to na

s.require_paths= ["lib/sqlite3_native"]
Harish Gopalakrishnan
źródło
7
To fantastyczny błąd w problemie, który w ogóle nie powinien istnieć, biorąc pod uwagę liczbę użytkowników Railsów w systemie Windows. Chciałbym wiedzieć, dlaczego dokładnie to działa ...
1
To działało w 1.3.9, ale nie było konieczne w 1.3.11. Jestem na Win7 x64.
Kidquick
3
Został już wyświetlony i wystąpił błąd: nie można załadować „active_record / connection_adapters / sqlite3_adapter”. Upewnij się, że adapter w config / database.yml jest poprawny. Jeśli używasz innego adaptera niż „mysql2”, „postgresql” lub „sqlite3”, dodaj niezbędny klejnot adaptera do pliku Gemfile.
Sterling Diaz
3
powyższego błędu z adapterem nie da się rozwiązać, zrobienie tego, co sugeruje hwding poniżej, zaoszczędziłoby mi trochę czasu - znowu jednak, być może naprawią to w następnych wydaniach lub naprawią to w zestawionych pakietach, takich jak RailsInstaller ( ruby2.3.1 z devkit (mingw z narzędziami do budowania), rails5.0.0.1) ps to niewiarygodne, że ten problem nadal występuje, po 2 latach - biorąc pod uwagę, że sqlite jest domyślnie używane w domyślnej aplikacji szkieletu i jest drogą do zrobienia in guide.rubyonrails.org/getting_started.html
hello_earth
2
Dwa lata? Co powiesz na TRZY lata?
Warren P
19

zobacz :https://stackoverflow.com/a/39136421/6755206

na szczęście nie musisz przechodzić na ruby ​​2.0,
istnieje rozwiązanie tego problemu, po niekończących się próbach ...

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


Kroki

Przed

  • gem uninstall sqlite3 --all

Źródło

Budować

  • uruchom wiersz poleceń w wyodrębnionym katalogu
  • upewnij się, że masz zainstalowany i dodany do PATH kompilator C.
  • gem install bundler
  • bundle install
  • rake native gem
  • znajdziesz wygenerowany katalog o nazwie „pkg”

zainstalować

  • wpisz dir „pkg”
  • gem install --local sqlite3-xxx.gem („xxx” to kod wersji)

Czek

  • irb
  • require 'sqlite3'
hwding
źródło
1
Dzięki @hwding. To działa idealnie! W moim przypadku, użytkowniku Windows, wygląda na to, że dwie wersje sqlite3 (32 i 64 bity) zostały skompilowane w „pkg”, ale właśnie zainstalowałem wersję 64-bitową (mój przypadek).
aaossa
1
tak, po wielu próbach, to jedyny sposób, który zadziałał ... inne osoby ( reddit.com/r/rails/comments/30s1cz/ ) sugerują przejście na coś takiego jak włóczęga i całkowite pominięcie Windows + Rails
hello_earth
1
Potwierdzam, że jest to jedyne rozwiązanie działające w systemie Windows 10; wypróbowałem kilka poprawek, ale tylko ta działa.
numediaweb
1
Zrobiłem zgodnie z wymienionymi krokami, ale nie widzę żadnego folderu utworzonego z tą nazwą pkg.
Yashu Mittal
U mnie działało, ponieważ you'll find a dir named 'pkg' generatednigdzie nie widziałem takiego katalogu. Poniższe rozwiązanie @Edson Momm działało dla mnie.
MSC
19

Ponieważ żądanie ściągnięcia # 229 zostało scalone, sqlite3 można zainstalować dla każdego git:klucza. Dzięki temu dodatkowi można łatwo używać sqlite3 w Gemfile:

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

Działa to na RubyInstaller-2.4 i nowszych. Po mingw-w64-x86_64-sqlite3uruchomieniu automatycznie instaluje wymagany pakiet pacman bundler install.

Więcej wskazówek dotyczących Rails w systemie Windows można znaleźć w FAQ RubyInstaller2 .

Lars Kanis
źródło
1
Ta odpowiedź jest pomocna dla nowych instalatorów Ruby w wersji Ruby Ruby 2.5.1p57 (2018-03-29, wersja 63029) i wersji Rails Rails 5.2.1
KTM
1
W międzyczasie PR został połączony. Odpowiednio zaktualizowałem swoją odpowiedź.
Lars Kanis,
Aby obejść problemy z SSL, użyłem: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt
13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

To rozwiązało problem.

Windows 10
Ruby 2.5.3
Rails 5.2.2
Edson Momm
źródło
1
OMG, to jest prawdziwe: D Tylko to działa dla mnie, Windows 10 jest okropny dla RoR. Wielkie dzięki!
Użytkownik 987
U mnie też zadziałało. Mój problem zaczął się po aktualizacji z Ruby 2.4 do Ruby 2.6 w systemie Windows 10.
knut
To była odpowiedź dla mnie również w Win10 Ruby 2.6 (x64). Dziękuję Ci!
vercingortix
Właściwie musiałem to zrobić kilka razy. Wygląda na to, że za każdym razem, gdy chciałbym bundle installzainstalować nowy klejnot, ponownie napotkałbym ten problem i musiałbym powtórzyć powyższe kroki.
vercingortix
9

Po prostu edytuj Gemfile i dodaj gem 'sqlite3', platform: :ruby.

Baran
źródło
5

Żadna kompilacja źródeł ani pobieranie wstępnie skompilowanych bibliotek nie rozwiąże tego problemu, uwierz mi, próbowałem wszystkiego, problem leży gdzie indziej. Tak to działa w systemie Windows:

bundle update sqlite3

Prawdopodobnie otrzymasz kolejny podobny błąd po tym dotyczącym nokogiri, napraw go za pomocą polecenia:

bundle update nokogiri

Ciesz się aplikacją Ruby!

Norman Seßler
źródło
4

Odinstalowanie i ponowne zainstalowanie klejnotu sqlite3 działało dla mnie.

gem uninstall sqlite3

bundle
JackHasaKeyboard
źródło
4

To zadziałało dla mnie:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
Bolan Oluwa
źródło
4

NAJLEPSZA OFICJALNA INSTALACJA

Używam rails 5.2.1p57, Windows 10 Uruchomienie następujących linii rozwiązało problem

gem uninstall sqlite3

i odinstaluj wszystkie zainstalowane wersje. ponownie wykonaj następujące polecenie

gem install sqlite3 --platform=ruby

Gotowe. Daj mi znać, jeśli problem będzie się powtarzał.

Pradeep Sapkota
źródło
3

Jeśli górna odpowiedź nie działa, znaleziona przeze mnie poprawka polega po prostu na przejściu do pliku Gemfile i dodaniu numeru wersji 1.3.11 (zamiast 1.3.9) zaraz po sqlite3. Zatem wiersz w twoim Gemfile powinien teraz brzmieć:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'
Andrew Britton
źródło
2

Miałem ten sam błąd, kiedy uaktualniłem moją wersję Ruby do 2.5.X. Śledziłem z rails task --trace że sqlite3 nie jest dostępna dla wersji 2.5, niż mogę zmienić GemFile gem „sqlite3” zmieni się na „sqlite3-ruby”, po tym, jak odinstalować gem „sqlite3” i wreszcie uruchomić bundle install.

Nie wiem, jaki jest tego powód ... Czytałem, że "sqlite3" nie jest jeszcze dostępne dla Ruby 2.5, ale nie jestem pewien.

Adrian Higuita
źródło
2

Aby uniknąć tego błędu, upewnij się, że gem sqlite3został on dodany do pliku Gemfile. Następnie wypakuj pliki „exe” i „dll” z łącza pobierania Sqlite do folderu bin Rubiego. Jeśli problem nadal występuje. Spróbuj tego:

bundle update

gem uninstall sqlite3

Mając do wyboru wiele wersji sqlite3, wybierz ostatnią opcję „Wszystkie wersje”. Wpisz tutaj ostatni numer

Wybierz gem do odinstalowania:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Wszystkie wersje
> 3 .
.
Jeśli usuniesz ten klejnot, te zależności nie zostaną spełnione.
Kontynuować odinstalowywanie? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

To powinno działać.

Przeczytaj ten link, aby uzyskać więcej wyjaśnień, jeśli powyższe działa dla Ciebie.

Saurabh Borse
źródło
1

Mnie też się to przydarzyło. Okazało się, że pierwotnie zainstalowałem SQLite 1.3.10, ale potem skopiowałem kilka perełek z projektu screencastów tutoriala Rails i wyświetlił SQLite 1.3.9. Wtedy dostałem ten sam błąd co ty. Zmieniłem go z powrotem na 1.3.10 i zadziałało.

(To jest w systemie Windows 7. Uruchomiłem samouczek screencast na Cloud9 IDE).

Paul Macias
źródło
1

To jedyne rozwiązanie, które zadziałało dla mnie, pochodzące z tego posta na GitHub :

  1. Pobierz wersję autoconf źródeł sqlite3 z https://www.sqlite.org/download.html .
  2. Uruchom powłokę MSYS.
  3. W rozpakowanej lokalizacji dla twojego sqlite3, skonfiguruj tylko wersję statyczną, aby uniknąć utrzymywania DLL na PATH: ./configure --disable-shared .
  4. Zbuduj i zainstaluj: make install DESTDIR=/c/dev/ruby/tmp . Możesz zmienić katalog.
  5. Otwórz wiersz poleceń systemu Windows i uruchom gem uninstall sqlite3 --all aby usunąć wszystkie istniejące klejnoty sqlite3.
  6. Ponownie w wierszu polecenia okien, zbudować i zainstalować 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. Te katalogi include i lib mogą się różnić, więc najpierw sprawdź.

Używam Ruby w wersji 2.5.1 i Rails w wersji 5.2.0 na Windows 10.

ismailarilik
źródło
i plik gemspec w folderze źródłowym Gem
Bilal Qadri,
1

znalazłem to! widziałem to https://www.youtube.com/watch?v=lsrzvX0qzmA
Zainstalowałem: Wersja Railsów: 5.2.1 Wersja Ruby: 2.5.3 (x64-mingw32) Wersja Sqlite 1.3.13
i mam twój problem. . moje rozwiązanie:

  1. W folderze instalacyjnym, takim jak C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    znajdują się foldery: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Znajdź plik
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Skopiuj go do C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (mogą to być foldery nie istnieją - utwórz i pasta)
Roman Dergunov
źródło
1

Zaktualizowano

Dodanie poniższego do poprawionego dla mnie pliku Gemfile: gem 'sqlite3', '1.4.0', platformy:: ruby

Ryan
źródło
1

Zmień swój klejnot sqlite3 w Gemfile na to:

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

Następnie uruchomić:

bundle install
Nicolás Nisoria
źródło
0

W przypadku użytkowników OSX może to wynikać z użycia menedżera ruby ​​(np. Rvm).

Jeśli edytujesz swój ~ / .bash_profile i dodasz to:

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

Możesz obejść ten problem. Uruchom ponownie Xcode przed ponowną próbą kompilacji.

Aktualny problem można śledzić tutaj: https://openradar.appspot.com/28726736 ).

Pełne uznanie trafia do: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Julian K.
źródło