エラー内容
以下のようにしてrailsプロジェクト作成時にエラーとなってしまう
$ rails new first_app
...
An error occurred while installing sqlite3, and Bundler cannot continue.
対応策
Gemgfileを開き、エラー文に記載されているバージョンを指定
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.2'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.3.10'
次に以下のようにBundlerをアップデート
bundle update
すると再度以下のようなエラーが
Using spring-watcher-listen 2.0.1
Fetching sqlite3 1.3.13
Installing sqlite3 1.3.13 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
sqlite3.h is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
sqlite-develをインストール
sudo yum install sqlite-devel
すると以下のようなエラー
※この辺記憶が曖昧なので順番が前後している可能性があります
An error occurred while installing sqlite3 (1.3.13), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'` succeeds before bundling.
エラー文に従いインストール
gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'
するとまた以下のようなエラー
sqlite3.h is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
先程sql-liteはインストールしたが、libsqlite3-devをインストールしていなかったのでインストール
sudo apt-get install libsqlite3-dev
再度
gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'
sqliteがインストールできた
Successfully installed sqlite3-1.3.13
Parsing documentation for sqlite3-1.3.13
Installing ri documentation for sqlite3-1.3.13
Done installing documentation for sqlite3 after 1 seconds
1 gem installed
改めてbundlerをupdate
bundle update
できたー
Using sqlite3 1.3.13
Fetching turbolinks-source 5.2.0
Installing turbolinks-source 5.2.0
Fetching turbolinks 5.2.0
Installing turbolinks 5.2.0
Fetching uglifier 4.1.20
Installing uglifier 4.1.20
Fetching web-console 3.7.0
Installing web-console 3.7.0
Bundle updated!
最後にDBを作成
rails db:create
追記
後日railsにてModel作成後、以下のコマンドでスキーマを確認しようとするとエラーとなってしまった
rails dbconsole
...
Couldn't find database client: sqlite3. Check your $PATH and try again.
上記手順にある「gem install sqlite3...」はあくまでrailsのsqlite3に関するパッケージをインストールしたにすぎず、
肝心のsqlite本体がインストールされていない?
以下でインストールし対応
sudo apt-get install -y sqlite3
以上