2016-03-22 7 views
2

Benötigen Sie Hilfe.Heroku sieht nicht gem 'pg'

Wenn ich versuche, [email protected]:~/rails_projects/sample_app$ heroku run rake db:migrate

Es ist ein Fehler zu machen:

Running rake db:migrate on limitless-fjord-69900.... up, run.2816 rake aborted!
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded.
Add gem 'pg' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:177:in rescue in spec' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:174:in spec' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_handling.rb:50:in establish_connection' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:120:in block (2 levels) in ' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in instance_eval' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in execute_hook' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:45:in block in run_load_hooks' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:in each' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:in run_load_hooks' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:315:in ' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:26:in <top (required)>' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:8:in ' . . .
Tasks: TOP => db:migrate => db:load_config (See full trace by running task with --trace)

Mein Gemfile ist:

'source 'https://rubygems.org' 
ruby '2.2.0' 
gem 'activerecord', '~> 4.2', '>= 4.2.6' 
gem 'rails', '4.2.6' 
group :development, :test do 
    gem 'byebug' 
    gem 'sqlite3', '~> 1.3', '>= 1.3.11' 
    gem 'rspec-rails', '~> 2.8' 
end 
group :test do 
    gem 'selenium-webdriver', '2.35.1' 
    gem 'capybara', '2.1.0' 
end 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'therubyracer', platforms: :ruby 
gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
group :doc do 
    gem 'sdoc', '~> 0.4.0', require: false 
end 
gem 'unicorn' 
group :development do 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 
group :production do 
    gem 'rails_12factor' 
    gem 'pg' 
end 

Was ist los?

+0

Verwendung 'pg' gem statt' sqlite'.For mehr Details dieses Dokument lesen –

+0

https://devcenter.heroku.com/articles/rails4#postgres Dies kann offensichtlich sein, aber hast du $ bundle insall ausgeführt, um es zu aktualisieren? – bkunzi01

+0

@Udaykumardas Ich habe 'pg' anstelle von' sqlite3' in der Entwicklung hinzugefügt. Keine Änderungen. – avzah

Antwort

2

Entfernen oder kommentieren gem 'sqlite3' von Ihrem Gemfile auch wenn es in development Gruppe. Ich weiß nicht warum, aber Heroku führt Ihre Anwendung nicht aus, wenn sie sqlite Edelstein außerhalb der Produktion enthält.

Wenn Sie SQLite in der Entwicklung verwenden, müssen Sie jedes Mal, wenn Sie nach Heroku bereitstellen und nach der Bereitstellung auskommentieren, gem 'sqlite' kommentieren.
Besserer Weg wird Postgres in Entwicklung sein.

+0

Wie kommentieren Sie nach der Bereitstellung auf Heroku 'gem 'sqlite'? Oder dies nur in meinem Code zu tun? – avzah

+0

Ja, Kommentar nur lokal. Verwenden Sie keine unkommentierte SQLite für Heroku. –

+0

Die Entscheidung war, Gemfile zu erneuern, 'sqlite3' zu löschen,' pg' in 'production' und' default' einzufügen. Danke für einen guten Hinweis! – avzah

1

Wie bereits erwähnt, könnte dies mit Ihrem sqlite Juwel zu tun haben.

Wenn Sie weiterhin sqlite verwenden möchten, können Sie festlegen, dass diese Gruppe ignoriert wird. Von Heroku docs:

To specify groups of gems to not to be installed, you can use the BUNDLE_WITHOUT config var.

$ heroku config:set BUNDLE_WITHOUT="development:test" 
+0

Muss ich den Befehl vor 'herokku run rake db: migrate' tun? – avzah

+0

@avzah: Ja, Sie müssen es vorher ausführen. –

+0

@avzah: Das funktioniert möglicherweise nur, wenn Sie eine Bereitstellung durchführen. Lass mich wissen, wie es in beiden Fällen ging. –