启动rails3.1应用程序缺少postgres gem时Heroku错误

时间:2011-06-20 11:45:50

标签: ruby-on-rails-3 postgresql heroku

我正在尝试部署到heroku。

Rails 3.1.0.rc4,

我从Heroku日志中收到以下错误:

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)

我尝试安装activerecord-postgresql-adapter,但后来我收到了这个错误:

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

所以我尝试将其添加到我的gem文件

gem'pg'

产生了这个错误:

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)

任何想法?

3 个答案:

答案 0 :(得分:18)

您不必在本地安装Postgres 。在你的Gemfile中,把'pg'放在group:production中,正如johnny-grass建议的那样,然后当你运行bundle时,只需指定--without production,就像这样:

bundle --without production

不幸的是,当你运行bundler时你必须记住这个参数,但至少你不必在本地安装和维护postgres。

请注意Heroku“强烈建议不要”使用sqlite,并说“您的生产和开发环境应该尽可能接近相同”http://devcenter.heroku.com/articles/rails3

答案 1 :(得分:12)

您的计算机上是否安装了PostgreSQL?如果不这样做,请先安装它,然后安装pg gem。

# gemfile
group :production do
  gem 'therubyracer-heroku', '0.8.1.pre3' # you will need this too
  gem 'pg'
end

答案 2 :(得分:6)

我在这个Heroku article中找到了一个解决方案。

正如Jared所说,他们建议为postgresql创建一个不同的组。