2015-10-05 54 views
1

localhost:3000是給我這個錯誤:本地主機:3000個索賠「寶石‘PG’」在沒有安裝,Heroku的應用程序工作正常

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).

創業板安裝並已捆綁在一起。令我困惑的是Heroku應用程序工作正常。我嘗試運行rake db:create時也遇到同樣的錯誤。

我目前正在註冊一個學習RoR的課程,我在社區論壇上提過這個問題,但沒有運氣。

我的Gemfile是:

source 'https://rubygems.org' 
ruby '2.2.1' 


gem 'rails', '4.2.4' 

gem 'sass-rails', '~> 5.0' 

gem 'bootstrap-sass', '~> 3.3.5' 

gem 'uglifier', '>= 1.3.0' 

gem 'coffee-rails', '~> 4.1.0' 

gem 'turbolinks' 

gem 'jbuilder', '~> 2.0' 

gem 'sdoc', '~> 0.4.0', group: :doc 

group :development, :test do 
    gem 'sqlite3' 
end 

group :production do 

gem 'pg', '~>0.18.3' 

gem 'rails_12factor' 

end 

group :development, :test do 

    gem 'byebug' 

end 

group :development do 

    gem 'spring' 

end 

我的database.yml是:

default: &default 
    adapter: postgresql 
    pool: 5 
    timeout: 5000 

development: 

    <<: *default 
    adapter: postgresql 
    encoding: unicode 
    database: my_development 
    username: davideye 
    password: 1234 
    host: localhost 
    port: 5432 


test: 

    <<: *default 
    database: my_test 
    username: davideye 
    password: 1234 

production: 

    <<: *default 
    database: my_production 
    username: davideye 
    password: 1234 
+0

顯示您的gemfile。我認爲這是你把PG寶石放在哪裏的問題。您需要在'production'環境中添加'pg',以及您在'development'中使用的任何其他設備env – nik

+0

gem pg正在生產中,並且sqlite3正在開發中。 Stackflow不會讓我發佈截圖,因爲我是一個新用戶 – Eyelabs

+0

只需將'gemfile'作爲代碼複製粘貼到您的問題中即可。你不需要屏幕截圖。 – nik

回答

1

在database.yml中已爲發展地方在Gemfile中已爲發展定義sqlite3定義postgres。所以要麼改變你的database.yml或在開發中的gemfile而不是sqlite3pg

0

當您使用sqlite3兩個devtest ENV

# Gemfile 
group :development, :test do 
    gem 'sqlite3' 
end 

更改適配器sqlite3在您的開發和試塊爲好。

# config/database.yml 
default: &default 
    pool: 5 
    timeout: 5000 

development: 
    <<: *default 
    adapter: sqlite3 
    database: db/my_development.sqlite3 

test: 
    <<: *default 
    adapter: sqlite3 
    database: db/my_test.sqlite3 

production: 
    <<: *default 
    adapter: postgresql 
    database: my_production 
    username: davideye 
    password: 1234 
    host: localhost 
    port: 5432 
1

這裏的問題是你的Gemfile。

group :production do 
     gem 'pg', '~>0.18.3' 
     gem 'rails_12factor' 
    end 

這告訴捆紮機只加載pg生產(這就是爲什麼它的工作原理在Heroku)。

您可以將gem 'pg' ...移出group :production塊,以便它也包含在開發中,或者在開發環境中使用sqlite3。

0

的問題是,因爲你在生產模式&添加寶石「PG」的開發使用的是「源碼」按你的Gemfile,但你根據你使用的database.yml發展PostgreSQL的

所以,刪除從生產塊&的寶石'pg'放在任何塊之前。

相關問題