2013-01-22 32 views
6

我剛加入了一個開發軌道引擎的項目,該項目還具有用於測試的虛擬應用程序。如何管理軌道引擎+虛擬應用程序的遷移

foo/ 
foo/spec/dummy/ 

有相同的遷移在

foo/db/migrate/ 
foo/spec/dummy/db/migrate/ 

如果我rake db:migrate從虛擬應用程序,一切都很好。如果我從引擎執行相同的操作(當前目錄= foo),則會出現有關具有相同名稱的多個遷移的錯誤。第一季度)Rakefiles是否被凍結? (應該db:migrate遞歸到虛擬應用程序?)

Q2)遷移是否應該只在一個目錄中?如果是這樣,哪一個?

我們使用Rails 3.2.9,ruby 1.9.3p194。

回答

7

問題1
該Rakefile應該有一個條目來說明spec/dummy應用程序。例如,

Bundler::GemHelper.install_tasks 
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__) 
load 'rails/tasks/engine.rake' 

這裏有更詳細的例子Rake文件,https://github.com/twinge/questionnaire_engine/blob/engine2/Rakefile

問題2
海事組織,遷移只能在富/ DB /遷移文件夾中,並的富/規格/空/ DB /遷移。實際上,我不是版本控制虛擬的db/migrate或db/schema。

爲什麼?我使用虛擬應用程序,確保完全安裝我的引擎可以100%工作。因此,如果我的版本控制了foo/spec/dummy db狀態,那麼我將測試,就好像有一個以前的安裝。

例引擎
https://github.com/twinge/questionnaire_engine/tree/engine2

相關問題