Ruby on Rails(RoR)アプリまたはRuby ActiveRecordフレームワークを使用するコードを実行すると、エラーメッセージが表示されます:
Postgresqlアダプターをインストールしてください:
gem install activerecord-postgresql-adapter
実行しようとしています:
gem install activerecord-postgresql-adapter
また、失敗し、あなたを困らせます。
問題は誰も書いたことではありません。問題は、GEMの名前は「pg」ですが、postgresqlデータベースアダプタの名前が「postgres」ではなく「postgresql」であることです。
Database.ymlファイルの定義には以下を含める必要があります
adapter: postgresql
Herokuから得た答えは次のとおりです(さまざまなpg gem、アダプター、およびこれに関する他の10の投稿で他のすべてを試した後)
1)Gemfileにgem 'pg'という行を追加します。
2)コマンドbundle installを実行して、gemをバンドルにインストールします。
3)GemfileおよびGemfile.lockの変更をステージングします。git add Gemfile Gemfile.lock
4)変更をコミットします:git commit -m "pg gemのインストール"
5)herokuへの再デプロイ:git Push heroku master
これは、新しい「pg」postgresqlライブラリがインストールされていないことを意味します。これは簡単に修正できます:
Sudo gem install pg
私(Dov)は、GEM_HOMEの設定とPATHへの〜/ .gem/Ruby/vers/binの追加について説明した他のソリューションをWeb上で見つけましたが、機能しませんでした。上記のソリューションは、Mark MansourのブログState of Fluxで提供されています: http://stateofflux.com/2008/7/13/activerecord-postgresql-adapter-in-Rails-2-1/ =
このエラーを引き起こすもう1つの深く隠れた状態があります。
ローカル環境変数DATABASE_URL = postgres:// mehmehmehが設定されている場合、いくつかのgem(Herokuの疑いがある)を使用すると、設定内のどこになくてもPostgresが必要であるとアプリに認識させます。そのenv変数を強制終了すれば大丈夫です。
これを試すことができます
Debian(squeeze)の場合:
aptitude install libdbd-pg-Ruby
Sudo apt-get install Ruby1.8-dev
その後...
gem install pg
私のために働いた!
Database.yml環境データベースが正しいことを確認してください。 postgresqlの場合、mysql2または特定の環境で使用しているdbを参照するように変更する必要がある場合があります。
Ruby + PostgreSQLデータベースドライバー railsonpostgresql.com )の現在の状態を少しまとめました; Sudo gem install pg
と思うおそらくあなたが望むものです。
さまざまな検索結果を試しながら、たくさんインストールしました。 「postgresqlアダプターをインストールしてください:gem install activerecord-postgresql-adapter」というメッセージで文句を言うことをやめさせたのは、最終的に次のとおりでした。
次のようなアダプターに関連するすべてのgemを削除しました。sudogem uninstall activerecord-jdbc-adapter; Sudo gem uninstall activerecord-jdbcpostgresql-adapter; Sudo gem uninstall activerecord-postgresql-adapter; Sudo gemアンインストールjdbc-postgres;
また、Gemfile内で次のようにアダプタへの参照を削除しました:gem 'activerecord-jdbcpostgresql-adapter'
Pg(0.15.1)のみをインストールしたままにします(pgの存在を確認するには、「gem list」を実行します)
その後、「rake db:create」を実行すると動作します。だから、私はpgが最新で動作していると思います。ただし、他の壊れたアダプターgemが存在する場合は使用されません。