2013-10-09 189 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 

所以我不确定我的问题的答案是:“是的,这样构建引擎是一个好主意”......但这个猴子补丁至少允许所有迁移从您的依赖引擎运行。