Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku error when launch rails3.1 app missing postgres gem

I am trying to deploy to heroku.

Rails 3.1.0.rc4,

I get the following error from Heroku logs:

Starting process with command: `thin -p 48902 -e production -R /home/heroku_rack/heroku.ru start`
2011-06-20T11:25:44+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.) (RuntimeError)

I tried to install the activerecord-postgresql-adapter but then I get this error:

Could not find gem 'activerecord-postgresql-adapter (>= 0)' in any of the gem sources listed in your Gemfile.

So I tried to add this to my gem file

gem 'pg'

which produced this error:

Installing pg (0.11.0) with native extensions /Users/imac/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

any ideas?

like image 631
chell Avatar asked Jun 20 '11 11:06

chell


3 Answers

You don't have to install Postgres locally. In your Gemfile, put 'pg' in group :production, as johnny-grass suggests, and then when you run bundle, just specify --without production, like this:

bundle --without production

Unfortunately, you have to remember this argument when you run bundler, but at least you don't have to install and maintain postgres locally.

Please note that Heroku "strongly recommends against" using sqlite, saying that "Your production and development environment should be as close to identical as possible" http://devcenter.heroku.com/articles/rails3

like image 181
Jared Beck Avatar answered Nov 01 '22 07:11

Jared Beck


Do you have PostgreSQL installed on your computer? If you don't then install it first, then install the pg gem.

# gemfile
group :production do
  gem 'therubyracer-heroku', '0.8.1.pre3' # you will need this too
  gem 'pg'
end
like image 12
David Avatar answered Nov 01 '22 08:11

David


I found a solution in this Heroku article.

As Jared said, they suggest to create a different group for postgresql.

like image 6
PaquitoSoft Avatar answered Nov 01 '22 07:11

PaquitoSoft