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