web-dev-qa-db-ja.com

Ruby on Rails-「gem sqlite3」をGemfileに追加」

私はRailsの完全なn00bであり、Rubyの初心者の知識しかありません。 Railsを実際に学ぶ前にRubyをもっと勉強するつもりですが、自分の利益のためにあまりにも興味があります。

とにかく、私はチュートリアルに従っていましたが、ブログのディレクトリに「Rails server」と入力すると言われたときに行き詰まりました。 「データベースアダプタに「sqlite3」を指定しましたが、gemはロードされていません。Gemfileにgem 'sqlite3'を追加してください。」そのため、サーバーを終了し、sqlite3をインストールし、サーバーを復元しました。このメッセージを再度取得するためだけです。 「gem list」を実行するとsqlite3は表示されませんが、ルートRubyディレクトリにフォルダーが表示されます。

それが役立つ場合、Ruby 2.0、Rails 4.0、sqlite3 1.3.7

他のどこかでこれが既に回答されている場合は申し訳ありませんが、stackoverflowである巨大なデータベースには何も見つかりませんでした。あなたが提供してくれる忍耐に感謝します。

どうもありがとうございました! hewhocomes

19
hewhocomes

問題が解決しました!

結局のところ、それはいくつかの異なる問題でした。

  1. 以前、rubyonrails.orgの入門ガイドに記載されているように、sqlite3を実行するためにインストールする必要があることを見落としていました。このガイドはsqlite.comへのリンクを提供してくれました。このサイトから、コマンドシェルとdllをダウンロードする必要がありました。どちらも「Windows用プリコンパイルバイナリ」の下にあります。詳細については、以下をご覧ください。

  2. Gemのインストールで、rubygems.orgから何もダウンロードできないというエラーが表示されました。結局、私が知らなかったルビジェムの新しいバージョンがありました。 gem update --systemで修正されました。

  3. Gem install sqlite3 --platform = Rubyを試しましたが、役に立ちませんでした。ネイティブ拡張を構築できず、sqlite3.hが見つかりませんでした。

  4. Rubyフォーラムについても質問しました。 http://www.Ruby-forum.com/topic/4415126 ここでは、Joel Pearson(virtuoso)が添付ファイルを介して必要な欠落ファイルを提供しました。これらのファイルはsqlite.comで提供されていないためです。ルートRubyのbinディレクトリにシェルファイルとdllファイルを配置するなど、彼の指示に従いました。

基本的に、GemfileまたはGemfile.lockを変更せずにsqlite3をインストールできました。私のgemリストにはsqlite3(1.3.7)が表示されており、RailsのWelcome画面がGetting Startedガイドに示されているように表示されています。 Windows 7-64ビットを使用し、Ruby 2.0、Rails 4.0で、sqlite3 1.3.7になりました。

このn00bのアドバイスと方向性を与えてくれた皆さん、本当にありがとう。ルートRubyディレクトリ、Gemfilesを探索したことで、RubyおよびRailsが適合するより良い私のコンピューターに。

初心者として、rubyonrails.orgの入門ガイドとsqlite.comの両方で、Windowsにインストールするために必要なsqlite3ファイルとフォルダーをダウンロードできることをお勧めします。

再度、感謝します! hewhocomes

4
hewhocomes

同じバージョンのRuby/Rails/gemfileにgem 'sqlite3'があることを確認した後でも、質問で指定したSQLiteでこのエラーが表示されました。使用しているOSがわからない(これがおそらく投票権を取り下げた理由です)が、Windows 7 x64を使用しています。

Gemをmy Railsアプリケーションにインストールするために、Gemfile.lockファイルを編集してsqlite3 (1.3.7-x86-mingw32)sqlite3 (1.3.7)

次に、バンドルインストールを実行した後、最終的に出力に表示されます

Using sqlite3 (1.3.7)

Rails server)を実行すると、(最終的に)「ようこそ」ページが表示されます。

20
Paul

私の場合、このエラー"Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile."を実行したときにメッセージが表示されたRails server新しいRailsアプリを生成した直後。Railsバージョン4.1.16(Rubyバージョン2.3.1)

gem 'sqlite3', '~> 1.3.0'

Gemfileのこの行は、エラーメッセージを削除しました。新しいsqlite gem(バージョン1.4)は古いRails(バージョン4.1)と競合していると思いますが、Githubリポジトリに関連する問題は見られませんでした。私と同じ状況を経験している人を助けるかもしれません。

13
kangkyu

X64 win 7でも同じ問題が発生します。

ソリューション(私にとって):

1)sqlite3をインストールする

gem sqlite3のインストール

2)インストールされているバージョンを確認する

gemリストsqlite3

Sqlite3(1.3.8 x64-mingw32)

3)Gemfile.lockを変更します

「sqlite3(1.3.8-x86-mingw32)」を「sqlite3(1.3.8-x64-mingw32)」に変更します

動作します:) Gemfile.lockのバージョン番号とx64の間に「-」を追加する必要があることに注意してください

Xmass

12
Xmass
  1. 別のデータベースをグローバルにしてから、gemファイルの環境に固有のsqlite3を作成しないでください。
  2. 以前のgemを使用します。
  3. 必ずbundle installを実行し、次にbundle updateを実行し、最後にbundle installを実行してください。

Gemfileには次のようなエントリが含まれる場合があります。

group :development, :production do
  gem 'pg', '0.15.1'
end

group :test do
  gem 'sqlite3', '1.3.6'
end
5
Lesly Revenge

私にとっては、gemfileでgem 'sqlite3'の後にバージョンを追加するのに役立ちました。そのため、gem 'sqlite3', '1.3.7'になりました。以前は、sqlite3のコンパイル、gemの更新などを試みました... Railsはまだ「受け入れる」ことができなかったため、最終的にバージョンの定義が役立ちました。

3
Kris Avi

私のために働いたSudo apt-get install libsqlite3-dev

2
Eduardo Herrera

この投稿 にある別の潜在的なソリューション

すでにsqliteをインストールしましたが、明らかに2019年2月4日以降、sqlite3 v1.4.0 gemに問題があります。

それまでの間、そのバージョンをGemfileの「sqlite3」行に追加することにより、v1.3.6にフォールバックできます。

gem 'sqlite3', '~> 1.3.6'

これが誰かの時間を節約することを願っています!

1
gwalshington

このエラーに遭遇した人のための小さな、しかし重要なサイドノート。バージョン1.4より前は、BundlerはWindows上の64ビットgem( https://github.com/bundler/bundler/issues/2658 )を理解できませんでした。ロック。

手動で変更する:

"sqlite3 (1.3.8-x86-mingw32" to "sqlite3 (1.3.8-x64-mingw32)"

bundlerの古いバージョンを使用している場合に機能します。 Bundlerは、アップグレードすると自動的に判断できるようになります(現在のところ、1.5.2は動作します)。

1

次の順序でコマンドを実行します

Sudo apt-get install libsqlite3-dev

Sudo gem install sqlite3-Ruby

gem list

このコマンドの後、sqliteの次のバージョンが表示されます。

sqlite3(1.3.12)

sqlite3-Ruby(1.3.3)

1
Syed_Shahiq

アプリケーションのルートフォルダーにあるGemfileにこの行を追加するだけです

  gem 'sqlite3'
0
maximus ツ