最近切換到Rails 3.1.0.rc4,並且我無法讓我們的CI構建版運行。它歸結爲以下簡單情況:rails 3.1 db:測試:準備和「待定遷移」問題
-bash-3.2$ echo $RAILS_ENV test -bash-3.2$ bundle exec rake db:drop db:create db:test:prepare You have 21 pending migrations: 20100628174219 InitialSchema 20100706175001 AddCompanyToClassifieds 20100720132917 CartItemActionMigration 20100811192506 AddJobTitleToDirectoryListings ...
如果我更換bundle exec rake db:drop db:create db:migrate db:test:prepare
它工作正常該命令。
在挖掘更深的核心db:test:prepare
任務有db:abort_if_pending_migrations
作爲先決條件。
現在我只是想念一些明顯的東西,還是完全沒有意義?運行db:test:prepare
(在標準情況下)調用db:schema:load
,它執行schema.rb - 其整個要點是加載模式而不運行所有遷移。除非所有遷移都已執行(因此在db:test:prepare
之前強制執行db:migrate
),否則無法運行,是不是完全無用?
我想我可以將額外的db:migrate
添加到我的CI構建過程中,但我想知道我做錯了什麼。
感謝您的回覆,但我沒有手動呼叫
db:test:prepare
- 這是rake spec
的預先請求。我只是手動列出它以簡化問題。rake spec
應該在測試環境中運行,所以我很難想象db:test:prepare
僅適用於開發環境。 (事實上,我絕不會在開發模式下使用它,因爲它會破壞我的數據。)再次感謝您的答覆。 –@David mcCullars:通過'activerecord/lib/active_record/railties/databases.rake',db:test:prepare'永遠不會破壞你的開發數據,並且不打算在開發環境中運行'test'命名空間在'test'數據庫上運行)。我不能說'spec'任務,因爲我沒有使用它,但它聽起來像不應該在測試環境中運行。 – cam