質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

5643閲覧

「 Add `gem 'pg'` to your Gemfile」のエラー解決方法について

ayachika

総合スコア36

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/08/18 02:01

現在railsチュートリアル5章までおわり、6章を進めようとしているものです。
railsをはじめて約一ヶ月ですが、かなりエラーが多発しており、苦戦中です。
今回、Gemfileに関するエラーが出たため、質問します。

実行したコード

$ rails generate model User name:string email:string

出たエラー

/usr/local/rvm/gems/ruby-2.4.1/gems/activerecord-5.1.4/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec': 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). (Gem::LoadError) 以下、略

同じエラー文がのっていた、参考にしたサイト
・ Rails does not work with pg 1.0.0
・ “postgresql gem is not loaded” error deploying a Ruby on Rails application on Heroku

これを参考に
Gemfileにgem 'pg','0.20.0'やを追加したり、gem 'pg','~>0.18'を追加したりするのですが、うまくいきませんでした。

ちなみにGemfileは以下のとおりです。

source 'https://rubygems.org' gem 'rails', '5.1.4' gem 'puma', '3.9.1' gem 'sass-rails', '5.0.6' gem 'uglifier', '3.2.0' gem 'coffee-rails', '4.2.2' gem 'jquery-rails', '4.3.1' gem 'turbolinks', '5.0.1' gem 'jbuilder', '2.7.0' group :development, :test do gem 'sqlite3', '1.3.13' gem 'byebug', '9.0.6', platform: :mri end group :development do gem 'web-console', '3.5.1' gem 'listen', '3.1.5' gem 'spring', '2.0.2' gem 'spring-watcher-listen', '2.0.1' end group :test do gem 'rails-controller-testing', '1.0.2' gem 'minitest-reporters', '1.1.14' gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end group :production do gem 'pg', '0.20.0' end # Windows環境ではtzinfo-dataというgemを含める必要があります gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] source 'https://rubygems.org' gem 'rails', '5.1.4' gem 'bootstrap-sass', '3.3.7'

ご回答いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

おそらく現状はローカルのdevelopment環境にて実装していると推察しますが、
database.ymlを見るとdevelopment環境は全てdefault部分に記載された内容を継承しています。
defaultの部分をみていただくと、adapterがpostgresqlとなっています。
つまり、development環境のデータベースはpostgresqlを使用します、とdatabase.ymlで設定されている状態です。

一方、冒頭に記載いただいたGemfileを見ると、postgresqlを使うためのGem、すなわちpgは、
production環境にのみインストールする、となっています。以下の部分です。

Gemfile

1group :production do 2 gem 'pg', '0.20.0' 3end

よって、database.ymlではpostgresqlを使えとなっているにも関わらず
development環境にpgがインストールされていないためエラーとなっていると想定されます。
Gemfileでは、development環境のデータベースとしてsqliteが指定されています。

実際に使用しているデータベースに合わせて、database.ymlを修正するか、development環境にpgをインストールするか、のいずれかが解決策になるかと思います。

現在の環境がdevelopmentでなかったら申し訳ありません。

投稿2018/08/18 06:14

psuke

総合スコア202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayachika

2018/08/18 09:41

環境がenvironmentでやっていますのでおそらく回答主様のおっしゃるdevelopmentかと思われます。 まだまだ不勉強なところがあり、完全にご助言を理解していないかもしれませんが、出先から帰宅したらもう一度チャレンジしてみます!ありがとうございます。
guest

0

config/database.ymlはどのように設定されていますか?

投稿2018/08/18 05:36

psuke

総合スコア202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayachika

2018/08/18 05:56

``` default: &default adapter: postgresql pool: 5 timeout: 5000 encoding: unicode development: <<: *default database: sample_app_development test: <<: *default database: sample_app_test production: <<: *default database: sample_app_production ``` 返信ありがとうございます!このようになっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問