首页 文章

Heroku没有't see gem ' pg'

提问于
浏览
2

需要帮忙 .

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

有一个错误:

运行rake db:在limitless-fjord-69900上运行.... up,run.2816 rake aborted! 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救援规范'/app/vendor/bundle/ruby/2.2.0 /gems/activerecord-4.2.6/lib/active_record/connection_adapters/connection_specification.rb:174:inspec'/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/connection_handling . rb:50:在'/ app / vendor /中的establish_connection'/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.6/lib/active_record/railtie.rb:120:inblock(2个级别) 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:在run_load_hooks'/ app中的块中的inexecute_hook'/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:45:in块/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/lazy_load_hooks.rb:44:ineach'/app/vendor/bundle/ruby/2.2.0/gems/ac tivesupport-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:在'/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' . . . 任务:TOP => db:migrate => db:load_config(通过使用--trace运行任务来查看完整跟踪)

我的Gemfile是:

'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

怎么了?

2 回答

  • 2

    Gemfile 删除或评论 gem 'sqlite3' ,即使它在 development 组中也是如此 . 当你的应用程序在 生产环境 之外包含 sqlite gem时,我不会运行你的应用程序 .

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

  • 1

    如前所述,这可能与你的 sqlite 宝石有关 .

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

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

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

相关问题