文系卒のWebエンジニアの成長と備忘録
エンジニア経験を生かして発信するメディアサイト

【Ruby on Rails】Railsでローカル接続できない時の解消法

こんにちはYsです。
【Ruby on Rails】を使用したオリジナルWebアプリケーションを開発しています。

Railsでは、ローカルでサーバーを立ち上げ、接続する際に
rails serverといったコマンドを打ち、localhost:3000に接続しますがその際に出たエラー、接続できないといった事象の解消法を書いていきます。

  1. エラーの内容
  2. エラーの原因
  3. 解消法

スポンサードサーチ



エラーの内容

railsを使用してローカルでサーバーを立ち上げる際に、
rails serverもしくは、rails sといったコマンドを打ちます。

その際に、サーバーは立ち上がりますが、localhost:3000にアクセスしたところ以下のような画面が出ます。

コンソール画面には以下のエラーが出現

#<LoadError: Error loading the 'sqlite3' Active Record adapter. 
Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), 
already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.>

エラーの原因

画面上ではコネクションプールがないと言われて、
コンソール上ではGemfileにないsqliteで動かそうとしているためエラーと言われている。
どちらが原因なのか?

  • コネクションプールの問題
  • sqliteの使用しているバージョン問題

結論は?

結論からいうとコンソールに出力している情報が正しく、
アプリケーションの初回作成で生成されるGemflieという設定ファイルに書かれたsqliteのバージョンが使用されていないこと。
つまりsqliteのバージョンが原因でした。

「指定されているsqliteが使用できないため、同時にコネクションプールの機能が使用できず、エラーとして画面上は出力される」
といった感じだと思います。勉強不足です。。。

解消法

実際にエラーを解消するには、sqliteのバージョンをコンソールで出力されているバージョンの指定に書き換えてあげる。

手順としては以下の通り。

  1. Gemfileを書き換える
  2. Gemflie.lockを削除
  3. bundle installを再度行う

Gemflieを書き換える

.
├── Gemfile  # このファイルを修正します
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── lib
├── log
├── package.json
├── public
├── storage
├── test
├── tmp

この中身でsqliteのバージョン指定がされている部分があります。

gem 'sqlite3', '1.4.6'

僕の場合は、上記のようになっていましたが、これをコンソールに出力されている~> 1.3.6で書き換えます。

# 修正前
gem 'sqlite3', '1.4.6'

# 修正後
gem 'sqlite3', '~> 1.3.6'

これで事前の準備は完了です。

Gemfile.lockの削除

.
├── Gemfile  
├── Gemfile.lock # このファイルを削除します
├── README.md
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── lib
├── log
├── package.json
├── public
├── storage
├── test
├── tmp

Gemfileのlockファイル、つまり現在使用しているGemflieの古い情報が残ってしまっています。
これを削除しないとバージョンを指定してもインストールがされないので、以下のコマンドで削除します。

$ rm Gemfile.lock 

次で再度のステップです。

bundle installを再度行う

初期設定のファイルを書き換えて、既存のファイルも削除したので再度ライブラリの再インストールを行います。
以下のコマンドを実行します。

$ bundle install

これで再度、rails serverのコマンドをうち、localhost:3000に接続し以下のような画面が出力されていたら成功です。


Ruby on Rails でローカル接続時に出てきたエラー解消について書きました。
Rails関連のエラー開発をしていく上でこれからも出てくると思うのでこのブログを通してアウトプットしていきます。

スポンサードサーチ



reference

railsdoc.com
gemfile - リファレンス - - Railsドキュメント
http://railsdoc.com/references/gemfile

\記事のシェアをお願いします!/