您好我一直在关注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
提前感谢!
答案 0 :(得分:0)
看起来gem pg仅在您的本地环境中加载。删除您的Gemfile.lock文件并运行bundle install
然后提交到您的github - &gt; git add -A
,git 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'
放在顶部。如果您使用的是其他版本,显然需要更改版本
答案 2 :(得分:-1)
当您将GEM置于生产组下时,似乎Heroku不会加载PG。我通过将 pg 和 rails_12factor gems移出组并将它们留在顶部来消除此错误。 您仍然可以在本地环境中使用 sqlite3 。