2013-10-09 187 views
0

我有一個可安裝的Rails引擎,它有自己的模型和命名空間表(MountableEngine)。我有另一個引擎,一個是--full,有自己的模式(FullEngine)。我希望將這兩種引擎都包含到實際的應用中,但只包含應用的GemFile中的完整引擎,即FullEngine如何在a:引擎中安裝a:mountable Rails引擎並運行遷移?

這可能嗎?我還沒有嘗試在骨架Rails應用程序測試此,但在FullEngine,我已經包括在Gemfile中的安裝引擎,就像這樣:

gem 'mountable_engine', path: "../my/path/mountable_engine" 

FullEngine運行遷移,我得到這個錯誤:

rake mountable_engine:install:migrations 
Don't know how to build task 'mountable_engine:install:migrations' 

爲什麼我想要的遷移在FullEngine運行的原因是,我想FullEngine封裝兩個引擎的組合邏輯和功能,從而使實際應用的只是其中FullEngine

繼承了這一切

回答

0

我也跟着上舉足輕重的實驗室的博客在這裏,leave your migrations in your Rails engines,它建議您猴修補的Rails ::引擎類添加您的發動機遷移路徑來調用應用程序的遷移路徑設置中的說明:

initializer :append_migrations do |app| 
    unless app.root.to_s.match root.to_s 
    app.config.paths["db/migrate"] += config.paths["db/migrate"].expanded 
    end 
end 

所以我不確定我的問題的答案是:「是的,這樣構建引擎是一個好主意」......但這個猴子補丁至少允許所有遷移從您的依賴引擎運行。