Heroku with rails 5 error Gem::LoadError: 为数据库适配器指定了“postgresql" [英] Heroku with rails 5 error Gem::LoadError: Specified 'postgresql' for database adapter

查看:21
本文介绍了Heroku with rails 5 error Gem::LoadError: 为数据库适配器指定了“postgresql"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一名 Rails 初学者,在部署到 Heroku 时遇到了一些问题.

I am a Rails beginner and i see some issue while deploying to Heroku.

之前我使用 SQLite3,后来当我知道我需要 postgresql 时,我安装了相同的并且在本地机器上工作.

Earlier i used SQLite3, later when i understood that i needed postgresql i installed the same and work on local machine.

从 sqlite 迁移到 postgresql 后,一次部署顺利.现在我看到了一些问题.

One deployment went fine after migrating from sqlite to postgresql. Now i see some issue.

Heroku 日志、Gem 文件和 Database.yml 详细信息如下.

Heroku logs, Gem file and Database.yml details are as below.

有人可以帮助我吗.

提前谢谢...!!!

Gem 文件的一部分:

Part of Gem file:

group :development, :test do
    gem 'pg', '~> 1.0.0'
  gem 'rails_12factor'
  #gem 'sqlite3'
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
end

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

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

数据库.yml:

development:
    adapter: postgresql
    encoding: unicode
    database: database_postgresql
    pool: 5
    username: postgres
    password: secret

test:
   adapter: postgresql
    encoding: unicode
    database: database_postgresql_test
    pool: 5
    username: postgres
    password: secret

production:
   adapter: postgresql
    encoding: unicode
    database: database_postgresql
    pool: 5
    username: postgres
    password: secret

Heroku 日志的一部分.

Part of Heroku logs.

remote: -----> Installing node-v6.11.1-linux-x64
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        Yarn executable was not detected in the system.
remote:        Download Yarn at https://yarnpkg.com/en/docs/install
remote:        I, [2018-01-15T13:38:08.180450 #590]  INFO -- : Writing /tmp/build_3dd0bceef080f0d8f6be5bc51b9d4a48/public/assets/jumbotron--032aba6cd1415006731040523573e7138c703aedc6d1f46b3622cbe4c9feec27.jpg
remote:        rake aborted!
remote:        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).
remote:        /tmp/build_3dd0bceef080f0d8f6be5bc51b9d4a48/vendor/bundle/ruby/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/connection_specification.rb:188:in `rescue in spec'

remote:        /tmp/build_3dd0bceef080f0d8f6be5bc51b9d4a48/vendor/bundle/ruby/2.3.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define'
remote:        /tmp/build_3dd0bceef080f0d8f6be5bc51b9d4a48/vendor/bundle/ruby/2.3.0/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
remote:        Tasks: TOP => assets:precompile
remote:        (See full trace by running task with --trace)
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to damp-beyond-28813.

推荐答案

如果您最近已将应用部署到 Heroku 并且在尝试访问 Heroku 应用链接时遇到应用崩溃"错误,但所有内容其他似乎是为了,这很可能是由于 'pg' gem 的新版本.Postgres 发布了一个新版本的 gem,它似乎还不完全兼容,所以在 group production 下的 Gemfile 中更改行:

If you have recently deployed your app to Heroku and in your attempt have been getting the "App crashed" error when you go to the Heroku app link, but everything else seems to be in order, it's most likely due to a new release of the 'pg' gem. Postgres has released a new version of its gem which seems not fully compatible yet, so in your Gemfile under group production change the line:

gem 'pg'
OR
gem 'pg', '~> 1.0.0'

gem 'pg', '~> 0.11'
OR
gem 'pg', '~> 0.20.0'

注意: > 前面的波浪号,不是破折号

Note: the tilde sign before the >, that's not a dash

一旦您在 Gemfile 的组生产中进行此更新,请确保运行 bundle install --without production(以更新 Gemfile.lock 文件),执行 git add/commit 循环,然后重新部署到 Heroku.

Once you make this update in your group production of your Gemfile, ensure you run bundle install --without production (to update Gemfile.lock file), do a git add/commit cycle, then re-deploy to Heroku.

良好实践

在没有 :group 的情况下使用 pg gem 一次,因为您的数据库对于 development生产!

Use pg gem one time without :group because your database is same for both development & production!

这篇关于Heroku with rails 5 error Gem::LoadError: 为数据库适配器指定了“postgresql"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆