Make the Most of IT.

お酒と映画が好きなJava屋さんがRubyとか学んだこと感じたことをつらつらと

rails newしただけなのにNo connection pool with 'primary' found.が出て困った話

はじめに

先日公開したrails環境構築中にgemのバージョン不整合でハマったので同じことで困ってる人に届け!

f:id:marumama6:20190217222540j:plain

環境

Ruby 2.5.1 ・Ruby on Rails 5.2.2 ・sqlite使用時

エラー概要

rails new の後、起動確認のためにrails serverでserverを立ち上げると下記エラー

エラーメッセージ:No connection pool with 'primary' found.

def retrieve_connection(spec_name) #:nodoc:
  pool = retrieve_connection_pool(spec_name)
  # 下でエラー
  raise ConnectionNotEstablished, "No connection pool with '#{spec_name}' found." unless pool
  pool.connection
end

原因

ググった結果、2019/2/4にgem ‘sqlite3’ が、2019/2/4に 1.3.13から1.4.0にアップデートされたため。 railsがまだ1.4.0に未対応のよう。

対策

sqlite3を明示的に1.3.Xを使用するように追記後、アップデート。

gem 'sqlite3', '~> 1.3.6'
$ bundle update

おわりに

というわけでRails newした時にsqliteのバージョンの壁に阻まれた場合の対応方法をご紹介しました。

rails tutorialでもsqliteを使ってたけど、Postgreの方がいいのかなぁ