我有一个可装载的Rails引擎,它有自己的模型和命名空间表(MountableEngine
)。我有另一个引擎--full
,有自己的架构(FullEngine
)。我想要的是将这两个引擎都包含在一个实际的应用程序中,但仅包含完整的引擎,即应用程序的GemFile中的FullEngine
。
这可能吗?我没有尝试在骨架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 :(得分:0)
我按照Pivotal Lab的博客leave your migrations in your Rails engines上的说明进行操作,建议您修补Rails :: Engine类以附加引擎的路径< / em>到调用应用程序的迁移路径设置:
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
所以我不确定我的问题的答案是否是:&#34;是的,并且那个以这种方式构建引擎的好主意&#34; ...但是这个猴子补丁至少允许所有迁移从依赖引擎运行。