ruby-on-rails - 使用 Rails API / Rspec / Postgresql 问题的 postgres 问题
问题描述
我在通过 rspec 运行测试时遇到问题
bundle exec rspec spec/requests/authentication_spec.rb
An error occurred while loading ./spec/requests/authentication_spec.rb.
Failure/Error: ActiveRecord::Migration.maintain_test_schema!
ActiveRecord::NoDatabaseError:
FATAL: Peer authentication failed for user "test"
我的开发数据库工作正常,我尝试将数据放入数据库并成功。我找到了很多解决方案,但没有任何效果。我的数据库配置:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: test
adapter: postgresql
host: localhost
port: 5432
user: test
password: test
test:
<<: *default
database: test
port: 5432
user: test
password: test
production:
<<: *default
url: <%= ENV['MY_APP_DATABASE_URL'] %>
我错过了什么?我是 postgresql 的新手,我想学习 rails,但我坚持使用 postgres(我也需要一些关于 postgres 的基本知识)
我正在使用 ubuntu 20、ruby '2.7.0'、rails 6.1.3.2、rspec-rails 5.0.1、postgres (PostgreSQL) 13.3 (Ubuntu 13.3-1.pgdg20.04+1)
解决方案
有两种情况。
- 数据库名称应该不同,以便有单独的数据库用于开发和测试。
- 需要在测试环境中添加主机密钥。
当我们在任何环境中包含默认值时,我们不需要重复在该环境中再次提到的相同信息。
前任。
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: localhost
development:
<<: *default
database: app_dev
port: 5432
user: test
password: test
test:
<<: *default
database: app_test
port: 5432
user: test
password: test
production:
<<: *default
url: <%= ENV['MY_APP_DATABASE_URL'] %>
还要确保数据库的用户名和密码匹配。因此,如果您的开发环境运行良好,我们只需要检查host
不同的数据库。
但是如果您的开发环境也有同样的问题(我的意思是当您rails s
在浏览器中启动并加载页面并且它不工作并显示数据库连接错误)那么您需要验证您的数据库用户和密码。
让我知道如果有什么没有任何意义。
推荐阅读
- python - 通过 Anaconda Prompt 上的“conda install”安装的软件包未列在 Anaconda Navigator 环境的软件包列表中
- javascript - 用winston 覆盖console.log|error 不再工作
- java - 如何绕过 Gradle 4.5 的 SSL 验证?
- dart - 如何在 ListTile 中添加 AlertDialog
- java - 试图理解java中的垃圾收集
- python - Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。- 滚动总和,使用 & 不能解决它
- php - 当我尝试从 RedBeanPHP 执行 R::exec 查询时,为什么会出现错误?
- sorting - 循环列表时出现 TI 基本索引错误
- c++ - 无需调试或在 VS Code 中运行即可构建项目
- react-native - 如何在 TextInput 的 onChangeText 中调用异步函数