如何在:完整引擎中安装:可安装的Rails引擎并运行迁移?

时间:2013-10-09 16:29:32

标签: ruby-on-rails ruby migration

我有一个可装载的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

1 个答案:

答案 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; ...但是这个猴子补丁至少允许所有迁移从依赖引擎运行。