böyle bir dosya yüklenemiyor - sqlite3 / sqlite3_native (LoadError) Ruby on rails üzerinde


84

Ruby 2.0.0 üzerinde Rails 4.0.0 kullanarak temel kurulum ve sunucu başlatmayı kurmaya çalıştığımda, aşağıdaki hata mesajıyla karşılaşıyorum.

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

Bu hata mesajından nasıl kaçınabilir ve daha fazla ilerleyebilirim?


bunu hangi işletim sisteminde deniyorsun?
Saifis

Windows sorunu gibi görünüyor. Çözümler değişiklik gösterir. Bunun sizin için işe yarayıp yaramayacağına bakın stackoverflow.com/a/6126062/2576857 .
Doodad

1
Ama pencere kullanıyormuş gibi görünmüyor. Belki bu makale yardımcı olabilir.
Althaf Hameez

Oh evet, / usr / local / etc, şimdi anladım, benim hatam. Bulduğum kadarıyla, bu sorunu yaşayan çoğu insan, PATH değişkeninde değil sqlite exe ve dll yüzünden oldu, ancak bu yalnızca Windows kullanıcılarının başına geldi. Sanırım sağladığınız makale başınıza çivi çakmalı ama bekleyip görelim.
doodad

Rails 4 ve Ruby 2.1 ise. - buraya bakın
discipleartem

Yanıtlar:


121

Sqlite3 gemspec dosyanızı bulun. Bir örnek /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

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

Rubygem yolunuza ve sqlite3 sürümünüze göre ayarlamalısınız. Yukarıdaki dosyayı düzenleyin ve aşağıdaki satırı arayın

s.require_paths=["lib"]

şuna değiştir

s.require_paths= ["lib/sqlite3_native"]

7
Bu, Windows'taki Rails kullanıcılarının sayısı göz önüne alındığında, ilk etapta olmaması gereken bir problem için harika bir hatadır. Bunun tam olarak neden işe yaradığını bilmek

1
Bu, 1.3.9 için çalıştı, ancak 1.3.11 için gerekli değildi. Win7 x64 kullanıyorum.
Kidquick

3
Zaten sunuldu ve hata: 'active_record / connection_adapters / sqlite3_adapter' yüklenemedi. Config / database.yml dosyasındaki bağdaştırıcının geçerli olduğundan emin olun. 'Mysql2', 'postgresql' veya 'sqlite3' dışında bir adaptör kullanıyorsanız, gerekli adaptör mücevherini Gemfile'a ekleyin.
Sterling Diaz

3
Bağdaştırıcıyla ilgili yukarıdaki hata çözülebilir görünmüyor, hwding'in aşağıda önerdiği şeyi yapmak bana biraz zaman kazandıracak - yine de, belki sonraki sürümlerde düzeltecekler veya bunu RailsInstaller gibi yığılmış paketlerde düzeltecekler ruby2.3.1 devkit ile (derleme araçlarıyla karma), rails5.0.0.1) ps sqlite'ın varsayılan olarak iskelet varsayılan uygulamasında kullanıldığı ve gitmenin yolu olduğu göz önüne alındığında, bu sorunun 2 yıl sonra hala devam etmesi inanılmaz. içinde guides.rubyonrails.org/getting_started.html
hello_earth

2
İki yıl? Üç yıl nasıl?
Warren P

19

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

Neyse ki, Ruby 2.0'a geçmek zorunda değilsiniz,
bu soruna bir çözüm var, sonsuz denemeden sonra ...

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


Adımlar

Ön

  • gem uninstall sqlite3 --all

Kaynak

İnşa etmek

  • çıkarılan dizinde komut satırını çalıştır
  • C derleyicinizin kurulu olduğundan ve PATH'e eklendiğinden emin olun
  • gem install bundler
  • bundle install
  • rake native gem
  • oluşturulan 'pkg' adlı bir dizin bulacaksınız

Yüklemek

  • dir 'pkg' girin
  • gem install --local sqlite3-xxx.gem ('xxx' sürüm kodudur)

Kontrol

  • irb
  • require 'sqlite3'

1
Teşekkürler @hwding. Bu mükemmel çalışıyor! Benim durumumda, Windows kullanıcısı, iki sqlite3 sürümü (32 ve 64 bit) 'pkg' olarak derlenmiş gibi görünüyor, ancak 64 bit olanı (benim durumum) kurdum.
aaossa

1
evet, çok denedikten sonra, işe yarayan tek yol budur .... diğer insanlar ( reddit.com/r/rails/comments/30s1cz/… ) serseri gibi bir şeye
geçmeyi

1
Bunun Windows 10 için çalışan tek çözüm olduğunu onaylıyorum; birkaç düzeltme denedim ama bu çalışan tek kişi.
numediaweb

1
Bahsedilen adımlara göre yaptım, ancak adla oluşturulmuş herhangi bir klasör görmüyorum pkg.
Yashu Mittal

you'll find a dir named 'pkg' generatedHiçbir yerde böyle bir dizin görmediğim için benim için çalıştı . @Edson Momm'un aşağıdaki çözümü benim için çalıştı.
MSC

19

Yana çekme isteği # 229 birleşti olmuştur Sqlite3 başına monte edilebilir git:anahtarın. Sqlite3'ü bu eklenti ile kolayca kullanmak mümkündür Gemfile:

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

Bu RubyInstaller-2.4 ve daha yeni sürümlerde çalışır. mingw-w64-x86_64-sqlite3Çalıştırdığınızda gerekli pacman paketini otomatik olarak yükler bundler install.

RubyInstaller2 SSS'de Windows üzerinde Rails için daha fazla ipucu var .


1
Bu cevap, yeni Ruby yükleyicileri Ruby 2.5.1p57 (2018-03-29 revizyon 63029) ve Rails 5.2.1
KTM

1
Bu arada PR birleştirildi. Cevabımı buna göre güncelledim.
Lars Kanis

Kullandığım SSL sorunlarını
aşmak için

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

Bu benim için sorunu çözdü.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG bu gerçek: D Sadece bu benim için çalışıyor, Windows 10 RoR için korkunç. Çok teşekkürler!
Kullanıcı 987

Benim için de çalıştı. Sorunum, Windows 10'da Ruby
2.4'ten

Bu benim için Win10 Ruby 2.6 (x64) için de cevaptı. Teşekkür ederim!
vercingortix

Aslında bunu birkaç kez yapmak zorunda kaldım. Görünüşe göre bundle installyeni bir mücevher kurmak için ne zaman yapsam , bu sorunla tekrar karşılaşacağım ve yukarıdaki adımları tekrar etmem gerekecek.
vercingortix

9

Sadece Gemfile'ı düzenleyin ve ekleyin gem 'sqlite3', platform: :ruby.


5

Kaynakların derlenmesi veya önceden derlenmiş kitaplıkların indirilmesi bu sorunu çözmez, inan bana her şeyi denedim, sorun başka bir yerde. Windows'ta şu şekilde çalışır:

bundle update sqlite3

Bundan sonra nokogiri ile ilgili benzer bir hata daha alırsınız, komutla düzeltin:

bundle update nokogiri

Ruby Uygulamanızın keyfini çıkarın!


4

Sqlite3 gem'in kaldırılması ve yeniden yüklenmesi benim için çalıştı.

gem uninstall sqlite3

bundle

4

Bu benim için çalıştı:

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

4

EN İYİ RESMİ KURULUM

5.2.1p57 rayları kullanıyorum, Windows 10 Sadece aşağıdaki satırları çalıştırmak sorunu çözdü

gem uninstall sqlite3

ve kurulu tüm sürümleri kaldırın. aşağıdaki komutu tekrar çalıştır

gem install sqlite3 --platform=ruby

Şimdi bitirdiniz. Sorun devam ederse bana bildirin.


3

En iyi cevap işe yaramazsa, keşfettiğim bir düzeltme, Gemfile'ınıza gidip sürüm numarasını (1.3.9 yerine) sqlite3'ün hemen arkasına eklemektir. Dolayısıyla Gemfile'ınızdaki satır şu şekilde olmalıdır:

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

2

Ruby sürümümü 2.5.X'e yükselttiğimde de aynı hatayı aldım. Birlikte izlenen rails task --traceben mücevher "sqlite3" kaldırmak ve nihayet çalıştırdıktan sonra benim GemFile "Sqlite3-Yakut" için mücevher "Sqlite3" değişim değiştirmek yerine, Sqlite3 sürüm 2.5 için kullanılabilir olmadığını bundle install.

Nedeni ne bilmiyorum ... "sqlite3" ün henüz Ruby 2.5 için mevcut olmadığını okudum, ama emin değilim.


2

Bu hatayı önlemek gem sqlite3için, bunun Gemfile'ınıza eklendiğinden emin olun. Ardından Sqlite indirme bağlantısından "exe" ve "dll" leri Ruby'nin bin klasörüne çıkarın . Sorun hala devam ederse. Bunu dene:

bundle update

gem uninstall sqlite3

Sqlite3'ün birden çok sürümü arasında seçim yapıldığında, son seçenek olan 'Tüm sürümler'i seçin. Buraya son numarayı girin

Kaldırılacak
gem'i seçin: 1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Tüm sürümler
> 3 .
.
Bu mücevheri kaldırırsanız, bu bağımlılıklar karşılanmayacaktır.
Kaldırma işlemine devam edilsin mi? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Bu çalışmalı.

Yukarıdaki sizin için uygunsa daha fazla açıklama için bu bağlantıyı okuyun .


1

Bu bana da oldu. Başlangıçta SQLite 1.3.10'u kurduğum ortaya çıktı, ancak daha sonra Rails öğretici ekran video kayıtları projesinden bazı taşlar kopyaladım ve SQLite 1.3.9'u listeledim. Sonra senin yaptığın aynı hatayı aldım. 1.3.10 olarak değiştirdim ve işe yaradı.

(Bu Windows 7'dedir. Ekran video kaydı eğitimini Cloud9 IDE'de çalıştırıyordum).


1

Bu GitHub sorun gönderisinden türetilen, benim için çalışan tek çözüm budur :

  1. Https://www.sqlite.org/download.html adresinden sqlite3 kaynaklarının autoconf sürümünü edinin .
  2. MSYS kabuğunu başlatın.
  3. Sqlite3'ünüz için paketlenmemiş konumda, yalnızca DLL'yi PATH: üzerinde tutmak için statik sürümü yapılandırın ./configure --disable-shared.
  4. Yapı ve kurun: make install DESTDIR=/c/dev/ruby/tmp. Dizini değiştirebilirsiniz.
  5. Pencerelerin komut istemini açın ve gem uninstall sqlite3 --allmevcut tüm sqlite3 mücevherlerini kaldırmak için çalıştırın .
  6. Yine komut pencereleri, yapılı istemi ve Sqlite3 mücevher yüklemek tarih: 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. Bunlar dahil ve kitaplık dizinleri farklı olabilir, bu nedenle önce kontrol edin.

Windows 10'da Ruby 2.5.1 ve Rails sürüm 5.2.0 kullanıyorum.


ve Gemspec dosyası Gem'in kaynak klasöründe
Bilal Qadri

1

buldum! Bu https://www.youtube.com/watch?v=lsrzvX0qzmA'yı gördüm
: Rails sürümü: 5.2.1 Ruby sürümü: 2.5.3 (x64-mingw32) Sqlite sürüm 1.3.13
ve sorununuz var .. . çözümüm:

  1. C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ gibi yükleme klasörünüzde şu
    klasörleriniz var: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Dosya bulun
    C: \ Ruby25-x64 \ lib \ yakut \ taşlar \ 2.5.0 \ taşlar \ 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 dizinine kopyalayın (klasörler mevcut olmayabilir - oluşturun ve yapıştırmak)

1

Güncellenmiş

Aşağıdakileri benim için düzeltilen Gemfile'a eklemek: gem 'sqlite3', '1.4.0', platformlar:: ruby


1

Bunun için Gemfile'da sqlite3 geminizi değiştirin:

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

O zaman koş:

bundle install

0

OSX kullanıcıları için, bu bir ruby ​​yöneticisi (örn. Rvm) kullanmaktan kaynaklanabilir.

~ / .Bash_profile dosyanızı düzenlerseniz ve bunu eklerseniz:

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

Bu sorunu çözebilirsiniz. Yeniden oluşturmayı denemeden önce Xcode'u yeniden başlatın.

Asıl sorun burada izleniyor: https://openradar.appspot.com/28726736 ).

Tam kredi şu adrese gider: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.