Heroku在启动Rails 3.1应用时出现错误,缺少Postgres gem。
Heroku在启动Rails 3.1应用时出现错误,缺少Postgres gem。
我正在尝试部署到Heroku。\nRails 3.1.0.rc4,\n我从Heroku日志中得到以下错误:\n
启动进程的命令:'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':请安装postgresql适配器:`gem install activerecord-postgresql-adapter`(pg不是bundle的一部分,请将其添加到Gemfile中。)(RuntimeError)
\n我尝试安装activerecord-postgresql-adapter,但是我得到了以下错误:\n
在Gemfile中列出的任何gem源中找不到'activerecord-postgresql-adapter(>= 0)'。
\n所以我尝试将以下内容添加到我的Gemfile中\ngem \'pg\'\n这产生了以下错误:\n
使用本机扩展安装pg(0.11.0)/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':错误:无法构建gem本机扩展。(Gem::Installer::ExtensionBuildError)
\n有任何想法吗?
根据我在Heroku官方文档中找到的解决方案,他们建议为postgresql创建一个不同的组。
首先,需要在Gemfile文件中添加以下内容:
group :production do gem 'pg' end
然后,在终端中运行以下命令,以确保Gemfile.lock文件已更新:
$ bundle install --without production $ bundle install --deployment
最后,将应用推送到Heroku:
$ git push heroku master
这样应该就能解决Heroku启动rails3.1应用时缺少postgres gem的问题了。
当在Heroku上启动Rails3.1应用程序时出现的Heroku错误,缺少postgres gem。
出现这个问题的原因是没有在计算机上安装PostgreSQL。需要先安装PostgreSQL,然后再安装pg gem。
在Gemfile文件中添加以下内容:
group :production do gem 'therubyracer-heroku', '0.8.1.pre3' # you will need this too gem 'pg' end
如果系统上没有安装PostgreSQL,可以按照以下步骤在Ubuntu上安装:
sudo apt-get install postgresql
然后执行以下命令安装libpq-dev:
sudo apt-get install libpq-dev
另外,therubyracer 0.9.4在Heroku上似乎能够正常编译,我不需要使用'therubyracer-heroku' gem。
希望以上方法对你有帮助。感谢你的建议。
Heroku error when launch rails3.1 app missing postgres gem
你不需要在本地安装Postgres。在你的Gemfile文件中,按照johnny-grass的建议,将'pg'放在:production组中,然后当你运行bundle命令时,只需指定--without production参数,就像这样:bundle --without production
。
不幸的是,你必须记住在运行bundler时使用这个参数,但至少你不需要在本地安装和维护postgres。
请注意,Heroku“强烈建议不要”使用sqlite,称“你的生产环境和开发环境应尽可能相同”http://devcenter.heroku.com/articles/rails3。
我在本地机器上安装了这个gem,而没有安装Postgres或使用bundle --without production
。你有关于如何完成这个的详细信息吗?