[英]Rake cannot run Rspec specs in Docker/Rails/Postgres setup (but web app works fine)
在使用Heroku-docker解决方案时,是否需要特殊的步骤或配置才能使Rails(3.2.21)测试数据库(例如,Rspec规范)在Docker下工作?
我正在使用Docker Toolkit(Docker Quickstart终端)在本地运行我的Heroku应用程序, 除运行规范之外的所有内容都正常工作。
这有效:
docker-compose run web rake db:reset
并且Web应用程序在加载了所有种子值的情况下工作,读取和写入数据库。
但是,创建或使用测试数据库的任何命令都会失败:
docker-compose run web rake db:test:prepare
docker-compose run web rake db:test:load
docker-compose run web rake spec
docker-compose run web bundle exec rake spec
所有抛出错误:
PG::ConnectionBad: FATAL: role "root" does not exist
我正在使用Heroku postgres图像,app.json看起来像:
{
"name": "My App",
"description": "Localized Docker Setup",
"image": "hrails200",
"addons": [
"heroku-postgresql"
]
}
(hrails200是修改为使用Ruby 2.0.0的heroku / ruby映像)
和docker-compose.yml文件以:
herokuPostgresql:
image: postgres
并且web和worker有一个指向Postgres的链接条目:
links:
- herokuPostgresql
我的config / database.yml看起来像:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
development:
<<: *default
database: docker_mondo_dev
test:
<<: *default
database: docker_mondo_test
当您连接到Postgres时,它默认为当前的Unix用户( $USER
)。 在Docker下,默认情况下你是'root'。 但是,Postgres默认没有任何名为“root”的用户。 相反,超级用户被命名为“postgres”。
我认为您的Web应用程序正在指定数据库用户名,而您的测试则不是。 您可以尝试将PGUSER
环境变量设置为postgres
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.