繁体   English   中英

Rake无法在Docker / Rails / Postgres设置中运行Rspec规范(但Web应用程序正常)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM