Heroku上的Rails应用程序无法识别pg Gem

时间:2013-10-09 04:11:46

标签: ruby-on-rails postgresql heroku

相当新的heroku所以原谅我的noobness。

尝试将在本地计算机上正常运行的应用程序部署到heroku。

后部署好
git push heroku master 

但是当我查看heroku日志时,我会收到以下错误:

2013-10-09T02:56:42.363522+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands/server.rb:48:in `app'
2013-10-09T02:56:42.363141+00:00 app[web.1]:    from /app/config.ru:in `<main>'
2013-10-09T02:56:42.363522+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
2013-10-09T02:56:42.363522+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
2013-10-09T02:56:42.406543+00:00 app[web.1]: => Ctrl-C to shutdown server
2013-10-09T02:56:42.406543+00:00 app[web.1]: => Rails 4.0.0 application starting in production on http://0.0.0.0:44409
2013-10-09T02:56:42.363522+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
2013-10-09T02:56:42.406543+00:00 app[web.1]: => Booting WEBrick
2013-10-09T02:56:42.406543+00:00 app[web.1]: Exiting
2013-10-09T02:56:43.780131+00:00 heroku[web.1]: State changed from starting to crashed
2013-10-09T02:56:43.770751+00:00 heroku[web.1]: Process exited with status 1
2013-10-09T02:59:44.437016+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=career-agent.herokuapp.com fwd="74.9.178.228" dyno= connect= service= status=503 bytes=
2013-10-09T02:59:44.746548+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=career-agent.herokuapp.com fwd="74.9.178.228" dyno= connect= service= status=503 bytes=
2013-10-09T03:04:32.057876+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=career-agent.herokuapp.com fwd="74.9.178.228" dyno= connect= service= status=503 bytes=
2013-10-09T03:04:31.565122+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=career-agent.herokuapp.com fwd="74.9.178.228" dyno= connect= service= status=503 bytes=
2013-10-09T03:06:56.946173+00:00 heroku[web.1]: State changed from crashed to starting
2013-10-09T03:07:02.040757+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 10939 -e $RAILS_ENV`
2013-10-09T03:07:09.880708+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/connection_specification.rb:55:in `resolve_hash_connection'
2013-10-09T03:07:09.880708+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
2013-10-09T03:07:09.880708+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/connection_specification.rb:46:in `resolve_string_connection'
2013-10-09T03:07:09.880708+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/connection_specification.rb:58:in `rescue in resolve_hash_connection': Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile. (Gem::LoadError)

我将gem pg添加到我的gemfile:

source 'https://rubygems.org'

gem 'protected_attributes'

group :production do
  # gems specifically for Heroku go here
  gem "pg"
end

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0'

# Use mysql as the database for Active Record
gem 'mysql2'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]

当我bundle show pg时:

/Users/Calvino/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.16.0

我已经开始bundle install

Calvins-Air:LifeAgent Calvino$ bundle install
Using rake (10.1.0) 
Using i18n (0.6.5) 
Using minitest (4.7.5) 
Using multi_json (1.7.9) 
Using atomic (1.1.13) 
Using thread_safe (0.1.2) 
Using tzinfo (0.3.37) 
Using activesupport (4.0.0) 
Using builder (3.1.4) 
Using erubis (2.7.0) 
Using rack (1.5.2) 
Using rack-test (0.6.2) 
Using actionpack (4.0.0) 
Using mime-types (1.25) 
Using polyglot (0.3.3) 
Using treetop (1.4.15) 
Using mail (2.5.4) 
Using actionmailer (4.0.0) 
Using activemodel (4.0.0) 
Using activerecord-deprecated_finders (1.0.3) 
Using arel (4.0.0) 
Using activerecord (4.0.0) 
Using coffee-script-source (1.6.3) 
Using execjs (2.0.1) 
Using coffee-script (2.2.0) 
Using thor (0.18.1) 
Using railties (4.0.0) 
Using coffee-rails (4.0.0) 
Using hike (1.2.3) 
Using jbuilder (1.5.1) 
Using jquery-rails (3.0.4) 
Using json (1.8.0) 
Using mysql2 (0.3.13) 
Using pg (0.16.0) 
Using protected_attributes (1.0.3) 
Using bundler (1.3.5) 
Using tilt (1.4.1) 
Using sprockets (2.10.0) 
Using sprockets-rails (2.0.0) 
Using rails (4.0.0) 
Using rdoc (3.12.2) 
Using sass (3.2.10) 
Using sass-rails (4.0.0) 
Using sdoc (0.3.20) 
Using turbolinks (1.3.0) 
Using uglifier (2.2.1) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

我一直在谷歌上搜索数小时无济于事。有帮助吗?显然在我的系统上找到了pg,为什么在Heroku上找不到它?

2 个答案:

答案 0 :(得分:2)

在本地添加pg gem之后,您可能没有推送到heroku。请尝试以下操作:

git add -A
git commit -m 'pg gem added'
git push
git push heroku 

我希望它有所帮助...

答案 1 :(得分:0)

我还看到mysql2中包含Gemfile个gem。不确定这是否与pg发生冲突。尝试仅限mysql2 gem到非生产环境。