RAILS TUTORIAL& HEROKU DEPLOYMENT:耙子流产! Gem :: LoadError:指定' postgresql'对于数据库适配器

时间:2016-09-11 02:27:08

标签: ruby-on-rails ruby-on-rails-4 heroku

您好我一直在关注www.railstutorial.org教程,当我需要将我的代码部署到heroku并且执行rake db:migrate'它不断给我带来同样的错误

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

这是我的宝石文件

source 'https://rubygems.org'


gem 'rails',                   '4.2.2'
gem 'bcrypt',                  '3.1.7'
gem 'faker',                   '1.4.2'
gem 'carrierwave',             '0.10.0'
gem 'mini_magick',             '3.8.0'
gem 'fog',                     '1.36.0'
gem 'will_paginate',           '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'bootstrap-sass',          '3.2.0.0'
gem 'sass-rails',              '5.0.2'
gem 'uglifier',                '2.5.3'
gem 'coffee-rails',            '4.1.1'
gem 'jquery-rails',            '4.0.3'
gem 'turbolinks',              '2.3.0'
gem 'jbuilder',                '2.2.3'
gem 'sdoc',                    '0.4.0', group: :doc


group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',             '0.17.1'
  gem 'rails_12factor'
  gem 'puma',           '3.1.0'
end

我已经完成了捆绑安装,它在我的本地计算机上运行正常,只是无法更新我的heroku数据库,而我的heroku应用程序总是给我“应用程序错误”。< / p>

我的所有代码实际上都在github中,你可以看到它here

提前感谢!

3 个答案:

答案 0 :(得分:0)

看起来gem pg仅在您的本地环境中加载。删除您的Gemfile.lock文件并运行bundle install然后提交到您的github - &gt; git add -Agit commit -m "some message"git push,然后执行git push heroku master heroku运行rake db:migrate现在应该可以工作了。

答案 1 :(得分:0)

这是因为配置文件夹中的database.yml文件。

在此文件中,您使用sqlite3作为数据库。如果要使用postgresql,则需要修改此文件。

例如,如果要将postgresql用于开发,测试和生产,则可以使用以下代码替换database.yml文件中的所有代码:

development:
  adapter: postgresql
  database: NAMEOFDATABASE_development
  pool: 5
  timeout: 5000

test:
  adapter: postgresql
  database: NAMEOFDATABASE_test
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: NAMEOFDATABASE_production
  pool: 5
  timeout: 5000

如果您只想使用postgresql进行生产,则只需修改生产代码

此外,您应该在gemfile的顶部声明您的ruby版本,方法是将ruby '2.3.1'放在顶部。如果您使用的是其他版本,显然需要更改版本

有关将数据库从sqlite转换为postgresql的详细信息,请参阅ThisThis

答案 2 :(得分:-1)

当您将GEM置于生产组下时,似乎Heroku不会加载PG。我通过将 pg rails_12factor gems移出组并将它们留在顶部来消除此错误。 您仍然可以在本地环境中使用 sqlite3