そのようなファイルをロードできません— Ruby onRailsのsqlite3 / sqlite3_native(LoadError)


84

Ruby2.0.0でRails4.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>'

このエラーメッセージを回避してさらに先に進むにはどうすればよいですか?


どのOSでこれを試していますか?
サイフィス2013

Windowsの問題のようです。ソリューションはさまざまです。これでうまくいくかどうかを確認してくださいstackoverflow.com/a/6126062/2576857
Doodad 2013

1
しかし、彼はウィンドウを使用しているようには見えません。多分この記事は助けになるでしょう。
Althaf Hameez 2013

そうそう、/ usr / local / etc、今それを見た、私の悪い。私が見つけたところによると、この問題を抱えているほとんどの人は、PATH変数にないsqlite exeとdllが原因でしたが、それはWindowsユーザーにのみ発生しました。あなたが提供した記事は頭に釘を打つべきだと思いますが、待って見てみましょう。
Doodad 2013

Rails4およびRuby2.1の場合。-ここを
discipleartem

回答:


121

sqlite3gemspecファイルを見つけます。一例は /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Windows : C:\Ruby21\lib\ruby\gems\2.1.0\specifications

Rubygemパスとsqlite3のバージョンに応じて調整する必要があります。上記のファイルを編集して、次の行を探します

s.require_paths=["lib"]

に変更します

s.require_paths= ["lib/sqlite3_native"]

7
これは、Windows上のRailsユーザーの数を考えると、そもそも存在してはならない問題に対する素晴らしいエラーです。私は...しかし、なぜ、まさにこの作品を知っているのが大好きだ

1
これは1.3.9で機能しましたが、1.3.11では必要ありませんでした。私はWin7x64を使用しています。
Kidquick 2016年

3
すでに表示されており、エラー:「active_record / connection_adapters / sqlite3_adapter」を読み込めませんでした。config /database.ymlのアダプターが有効であることを確認してください。'mysql2'、 'postgresql'、または 'sqlite3'以外のアダプターを使用する場合は、必要なアダプターgemをGemfileに追加します。
スターリングディアス

3
アダプターに関する上記のエラーは解決できないようです。最初にhwdingが提案することを実行すると、かなりの時間を節約できます。ただし、次のリリースで修正されるか、RailsInstallerのようなスタックパッケージで修正される可能性があります( ruby2.3.​​1 with devkit(mingw with build tools)、rails5.0.0.1)ps sqliteがスケルトンのデフォルトアプリケーションでデフォルトで使用されていることを考えると、この問題が2年後も続くとは信じられません。中guides.rubyonrails.org/getting_started.html
hello_earth

2
2年?3年はどうですか?
ウォーレンP

19

参照:https//stackoverflow.com/a/39136421/6755206

幸いなことに、ruby 2.0
に切り替える必要はありません。何度も試した後、この問題の解決策があります...

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


ステップ

プレ

  • gem uninstall sqlite3 --all

ソース

  • 最新のsqlite3-ruby、https: //github.com/sparklemotion/sqlite3-rubyをダウンロードします
  • パッケージを解凍します

ビルド

  • 抽出されたディレクトリでコマンドラインを実行する
  • 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ユーザーの場合、2つのsqlite3バージョン(32ビットと64ビット)が「pkg」でコンパイルされているようですが、64ビットバージョン(私の場合)をインストールしただけです。
aaossa 2016

1
はい、何度も試した後、これが機能した唯一の方法です....他の人(reddit.com/r/rails/comments/30s1cz/…)は、vagrantのようなものに移動し、Windows + Railsを完全にスキップすることを提案しています
hello_earth

1
これがWindows10で機能する唯一のソリューションであることを確認します。いくつかの修正を試みましたが、これが機能している唯一の修正です。
numediaweb 2016年

1
上記の手順に従って実行しましたが、という名前で作成されたフォルダーが表示されませんpkg
Yashu Mittal 2018

you'll find a dir named 'pkg' generated私はどこにもそのようなディレクトリを見なかったので、私のために働いた。以下の@EdsonMommのソリューションは私のために働いた。
MSC

19

以来、プルリクエスト#229 sqlite3のはごとにインストールすることができ、マージされたgit:キー。あなたのGemfile:にこの追加を行うことで、sqlite3を簡単に使用することができます。

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

これはRubyInstaller-2.4以降で機能します。これは、自動的に必要なパックマンパッケージをインストールしmingw-w64-x86_64-sqlite3、あなたが実行したときbundler install

RubyInstaller2 FAQには、Rails onWindowsに関するその他のヒントがいくつかあります。


1
この回答は、新しいRubyインストーラーのrubyバージョンruby 2.5.1p57(2018-03-29リビジョン63029)およびrailsバージョンRails 5.2.1
KTM

1
その間、PRは統合されました。それに応じて答えを更新しました。
ラースKanis

私が使用したSSLの問題を回避するには:宝石'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

これで問題は解決しました。

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMGはこれほど本物です:Dこれだけが私には機能します。Windows10はRoRにとってひどいものです。どうもありがとう!
ユーザー

私のためにも働いた。私の問題は、
Windows10でruby2.4からruby2.6に

これは、Win10 Ruby 2.6(x64)でも私にとっての答えでした。ありがとうございました!
vercingortix

私は実際にこれを数回しなければなりませんでした。bundle install新しいgemをインストールするためにを実行するときはいつでも、この問題が再び発生し、上記の手順を繰り返す必要があるようです。
vercingortix

9

Gemfileを編集して追加するだけ gem 'sqlite3', platform: :rubyです。


5

ソースをコンパイルしたり、コンパイル済みのライブラリをダウンロードしたりしても、この問題は解決しません。すべてを試したと思います。問題は別の場所にあります。これは、Windowsでの動作方法です。

bundle update sqlite3

nokogiriに関して、このエラーの後に別の同様のエラーが発生する可能性があります。次のコマンドで修正してください。

bundle update nokogiri

Rubyアプリをお楽しみください!


4

sqlite3gemのアンインストールと再インストールは私のために働いた。

gem uninstall sqlite3

bundle

4

これは私のために働いた:

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

4

最高の公式インストール

Rails 5.2.1p57、Windows 10を使用しています。次の行を実行するだけで、問題が発生しました。

gem uninstall sqlite3

インストールされているすべてのバージョンをアンインストールします。次のコマンドを再度実行してください

gem install sqlite3 --platform=ruby

これで完了です。問題が解決しない場合はお知らせください。


3

一番上の答えが機能しない場合、私が発見した修正は、単にあなたのGemfileに行き、sqlite3の直後にバージョン番号1.3.11(1.3.9ではなく)を追加することです。したがって、Gemfileの行は次のようになります。

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

2

Rubyバージョンを2.5.Xにアップグレードしたときに同じエラーが発生しました。rails task --tracesqlite3はバージョン2.5で使用できないことを追跡しまし た。これは、gem "sqlite3"をアンインストールした後、gem "sqlite3"を "sqlite3-ruby"に変更し、最後にを実行するよりもbundle installです。

理由はわかりません...「sqlite3」はまだruby2.5で利用できないと読みましたが、よくわかりません。


2

このエラーを回避するにgem sqlite3は、それがGemfileに追加されていることを確認してください。次に、SqliteダウンロードリンクからRubyのbinフォルダーへの「exe」と「dll」を抽出します。それでも問題が解決しない場合。これを試して:

bundle update

gem uninstall sqlite3

sqlite3の複数のバージョンから選択する場合は、最後のオプション「すべてのバージョン」を選択します。ここに最後の番号を入力してください

アンインストールするgemを選択し
ます。1。sqlite3-1.3.132。sqlite3-1.3.13
-x64-mingw323
。すべてのバージョン
> 3

このgemを削除すると、これらの依存関係は満たされなくなります。
アンインストールを続行しますか?[yN]
> y

gem install sqlite3 --platform=ruby

rails s

これはうまくいくはずです。

上記がうまくいく場合は、このリンクを読んで詳細を説明してください。


1

これは私にも起こりました。最初にSQLite1.3.10をインストールしたことが判明しましたが、Railsチュートリアルのスクリーンキャストプロジェクトからいくつかのgemをコピーすると、SQLite1.3.9がリストされました。それから私はあなたがしたのと同じエラーを受け取りました。1.3.10に戻したところ、機能しました。

(これはWindows 7です。Cloud9IDEでスクリーンキャストチュートリアルを実行していました)。


1

これは私のために働いた唯一の解決策であり、このGitHubの問題の投稿から派生しています

  1. https://www.sqlite.org/download.htmlからsqlite3ソースのautoconfバージョンを取得します
  2. MSYSシェルを起動します。
  3. sqlite3の解凍された場所で、静的バージョンのみを構成して、DLLがPATHに保持されないようにします./configure --disable-shared
  4. ビルドしてインストールしますmake install DESTDIR=/c/dev/ruby/tmp。ディレクトリを変更できます。
  5. Windowsのコマンドプロンプトを開き、実行gem uninstall sqlite3 --allして既存のsqlite3gemをすべて削除します。
  6. 再びWindowsのコマンドプロンプトで、sqlite3gemをビルドしてインストールします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ディレクトリは異なる場合があるため、最初に確認してください。

Windows10でRubyバージョン2.5.1とRailsバージョン5.2.0を使用しています。


Gemのソースフォルダー内のgemspecファイル
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 \のようなインストールフォルダーには、
    「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 '、platforms :: ruby


1

これのためにGemfileでsqlite3gemを変更します:

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

次に、以下を実行します。

bundle install

0

OSXユーザーの場合、これはrubyマネージャー(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/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.