2012年8月18日土曜日

Heroku に push したら、sqlite3 のエラーが発生

Heroku(www.heroku.com)に Rails アプリをプッシュした時に、
sqlite3 について、ExtensionBuildError が発生したのでその対処を記述します。

Heroku ではデータベースとして PostgreSQL を提供しており、
sqlite3 には対応していません。
このため、sqlite3 を除いて push します。

sqlite3 に関するエラーメッセージ
$ git push heroku master
  (中略)
  Installing sqlite3 (1.3.6) with native extensions
  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  /usr/local/bin/ruby extconf.rb
  checking for sqlite3.h... no
  sqlite3.h is missing. Try 'port install sqlite3 +universal'
  or 'yum install sqlite-devel' and check your shared library search path (the
  location where your sqlite3 shared library is located).
  (以下略)


Rails のアプリケーション ディレクトリにある、Gemfile を修正します。
Heroku では PostgreSQL のライブラリ pg を使い、sqlite3 は開発用に使用することにします。

group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
  gem 'sqlite3-ruby', :require => 'sqlite3' ※ これはインストールしている場合に必要
end


この後、Git に Gemfile をコミットした後に、Heroku に push します。
$ git commit Gemfile -m <message>
$ git push heroku master