Rails的3.1 – 推向Heroku – 错误安装postgres适配器?

我刚刚升级到Rails 3.1,我试图部署到Heroku的第一个应用程序遇到了与Postgres适配器有关的问题。 我能够把应用程序推到heroku,但是当我尝试迁移数据库时,我得到以下错误:

heroku rake db:migrate

rake aborted! Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.) Tasks: TOP => db:migrate => db:load_config (See full trace by running task with --trace) 

当我尝试他们的build议安装我得到:

 ERROR: Could not find a valid gem 'activerecord-postgresql-adapter' (>= 0) in any repository ERROR: Possible alternatives: activerecord-postgis-adapter, activerecord-jdbcpostgresql-adapter, activerecord-postgresql-cursors, activerecord-jdbcmysql-adapter, activerecord-jdbcmssql-adapter 

这似乎已经很奇怪了……那么我应该安装什么样的gem来让这个东西工作,如果不是他们说我应该安装?

当我尝试安装gempg我得到:

 Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/jerometufte/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** 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. Provided configuration options: --with-opt-dir ... 

我目前正在使用SQLite3。 任何帮助不胜感激,这是莫名其妙。

选项1:

pg添加到您的Gemfile但跳过尝试在本地安装。

 $ cat Gemfile ... group :production do # gems specifically for Heroku go here gem "pg" end # Skip attempting to install the pg gem $ bundle install --without production 

选项2(Debian / Ubuntu):

pg添加到您的Gemfile但首先安装先决条件。

 $ cat Gemfile ... group :production do # gems specifically for Heroku go here gem "pg" end # Install the pg gem's dependencies first $ sudo apt-get install libpq-dev # Then install the pg gem along with all the other gems $ bundle install 

你一定需要在Gemfile for Heroku中使用pg。

关于你在本地获得的错误:确保你安装了postgres,运行gem install pq -- --with-pg-config=[path to wherever your pg-config binary is] ,然后安装bundle。

或者,如果你的本地数据库工作正常(因为你使用的是sqlite或postgres-pr),你可以把gem'pg gem 'pg'行放在一个名为production的组中,然后bundle install --without production在本地没有bundle install --without production

更新的信息:这与本地不同版本的pg gem有关。

我已经在一个生产组(我在本地运行sqllite)pg,但Heroku仍然在呕吐。

我的新Rails 3.1应用程序出现问题,

 rm Gemfile.lock touch Gemfile bundle install git add . git commit -am "wiped Gemfile.lock re-ran bundle install" git push heroku master 

当我然后运行heroku run rake db:migrate时,就像一个魅力工作