簡體   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