Heroku看不到宝石'pg'

时间:2016-03-22 11:48:31

标签: ruby-on-rails heroku dbmigrate

需要帮助。

当我尝试制作时 user@X220:~/rails_projects/sample_app$ heroku run rake db:migrate

有一个错误:

  

运行rake db:migrate on limitless-fjord-69900 .... up,run.2816   耙子流产!
  Gem :: LoadError:为数据库适配器指定'postgresql',但未加载gem   将gem 'pg'添加到您的Gemfile中(并确保其版本达到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/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in establish_connection' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:120:in execute_hook'   /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:45:in instance_eval' /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:38:in each'   /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44: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'   /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:26:in run_load_hooks' /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/base.rb:315:in'   。   。   。
  任务:TOP => db:migrate => DB:load_config   (通过使用--trace运行任务查看完整跟踪)

我的Gemfile是:

<top (required)>'
  /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/tasks/mysql_database_tasks.rb:8:in

怎么了?

2 个答案:

答案 0 :(得分:2)

gem 'sqlite3'移除或评论Gemfile,即使它位于development群组中。 我不知道为什么,但是当Heroku在生产之外包含sqlite gem时,Heroku不会运行你的应用程序。

如果您在开发中使用SQLite,则每次部署到Heroku时都必须发表评论gem 'sqlite'并在部署后取消注释。
更好的方法是在开发中使用Postgres。

答案 1 :(得分:1)

如前所述,这可能与您的sqlite宝石有关。

如果您仍想使用sqlite,可以设置忽略该组。来自Heroku docs:

  

要指定不安装的gem组,可以使用BUNDLE_WITHOUT config var。

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