【rails】Specified 'postgresql' for database | 瀬戸内の雲のように

【rails】Specified 'postgresql' for database adapter, but the gem is not loaded と怒られた件

Posted: 2018-01-21


スポンサーリンク

目次

背景

とあるrailsアプリでjavascriptをいじっていた時のこと。
Google先生に聞いた手順を何気なく実行したら、その後アプリが起動しなくなってしまい、冷や汗をかいたのでメモしておきます。

環境

  • rails4.2.3
  • ruby 2.3.0p0

実施した作業

作業内容としては、application.js を編集した後にbundle updateを実行し、railsを再起動するという内容。
ここでアプリが起動しなくなりました。

エラー内容

起動すると以下のようなエラーが出ました。

Gem::LoadError (Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).):

元々起動できていたし普通にDBも使えてたので、なんか変だぞ?と思ったものの、まあなんか手順飛ばしたかな〜?と思い再度手順を実行。しかし色々修正を試みても一向に改善されず、ここで手順を見直し、ようやく「あれ、bundle updateってそんな気軽にしていいんだっけ?」と気付きました。

原因

で、原因なのですが、やはりbundle updateの問題でした。
具体的にはpgというgemのバージョンが上がってしまったことが原因でした。

元々はpgのバージョンは0.21.0だったのですが、bundle updateを実行したことにより1.0.0になってしまったため起動しなくなったようです。

対処方法

私は

  1. gemからpg '1.0.0'を削除
  2. Gemfileにバージョン'0.21.0'を指定
  3. bundle install

という対処で復旧しました。具体的な手順は以下の通りです。

1. gemからpg '1.0.0'を削除

$ gem uninstall pg 

Select gem to uninstall:
 1. pg-0.18.4
 2. pg-0.20.0
 3. pg-0.21.0
 4. pg-1.0.0
 5. All versions
> 4

これでpg-1.0.0は削除されました。

2. Gemfileにバージョン'0.21.0'を指定

Gemfileの該当箇所に '0.21.0'と追記

$ vim Gemfile
 # Use postgresql as the database for Active Record
 ### gem 'pg'  <== 元々の記述
gem 'pg', '0.21.0'

3. bundle install

最後にbundle installを実行して完了です。

$ bundle install

以上となります。
起動しなくなった時はやっちまった感でいっぱいでしたが、割とすぐ直せたのでよかったです。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back