部署到 Digital Ocean Droplet 时出现 Postgres 错误

Postgres Error when Deploying to Digital Ocean Droplet

我在尝试使用 Capistrano 的 cap production deploy 将我的应用程序部署到 Digital Ocean Droplet 时不断遇到错误。我收到的错误消息是:

rake aborted!
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded.
Add `gem 'pg'` to your Gemfile

但我的 Gemfile 确实在 production 中包含 pg:

...
group :production do 
  gem 'rails_12factor'
  gem 'pg'  
end
...

这可能是什么原因造成的?

新发展:

我尝试将数据库适配器重置回 sqlite3,只是为了查看部署是否会通过,但得到了同样的错误:

Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile

事实证明这是 Win 用户的已知错误。在您的 Gemfile.lock 中,更改

sqlite3 (1.3.10-x86-mingw32)

sqlite3 (1.3.10-x64-mingw32)

我直接在我的存储库中进行了此操作,因为每次我在本地进行此更改并安装 运行 捆绑软件时,x64 标志都会不断切换回来。

您还应该在 Gemfile 中解决一些问题 -- 我建议您从 Gemfile 中删除这一行:

gem 'rails_12factor'

rails_12factor 是 Heroku 特定的日志记录 gem,它会对您的 Digital Ocean Rails 服务器造成严重破坏。我可以作证。