0

我有一个可挂载的 Rails 引擎,它有自己的模型和命名空间表 ( MountableEngine)。我有另一个引擎,一个--full有自己的架构(FullEngine)。我想要将这两个引擎都包含到一个实际的应用程序中,但只包含完整的引擎,即FullEngine在应用程序的 GemFile 中。

这可能吗?我没有尝试在框架 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

4

1 回答 1

0

我按照此处 Pivotal Lab 博客上的说明进行操作,将您的迁移留在 Rails 引擎中,这建议您对 Rails::Engine 类进行猴子修补,以将引擎的迁移路径附加到调用应用程序的迁移路径设置中:

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

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

于 2013-10-09T16:51:58.023 回答