2

sqliteを使用してローカルでアプリを開発しましたが、Herokuに移動したいので、今後はpostgresを使用します。これまでのところ、データベースを保持する必要はありません。次のように爆発するため、HerokuがSqliteをインストールしようとしないようにする必要があります。

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).
       *** extconf.rb failed ***
       Could not create Makefile due to some reason, probably lack of
       necessary libraries and/or headers.  Check the mkmf.log file for more
       details.  You may need configuration options.

database.ymlファイルを変更してGemfileに切り替え'gem' "sqlite3"まし'gem' "pg"たが、herokuはまだ怒っています。アプリをコミットするときにsqlite3をインストールしようとしないように、他に何を変更する必要がありますか?

4

1 に答える 1

4

gem'pg'を使用するようにGemfileを変更したら、bundleコマンドを再実行する必要があります。それが完了したら、GemfileとGemfile.lockをgitにコミットしてから、アプリケーションをHerokuにプッシュすると、動作するはずです。

Postgresをローカルで実行しない場合は、gemファイルの本番グループにgem'pg'を追加する必要があります。そうしないと、バンドルをローカルで実行するときに、gemをコンパイルしようとするときに問題が発生します。gem'sqlite'をGemfileの開発グループに安全に移動して、環境間で異なるDBを使用できます。ただし、展開先と同じDBをローカルで実行するのが最も安全であることに注意してください。

于 2012-04-16T18:13:06.317 に答える