为依赖gem指定Rails::Engine的正确方法



我正在构建一个命名空间的Rails引擎gem,它将通过其他gem进行扩展。例如:MyEngine是主gem,它也将是命名空间。MyEngine-blog,MyEngine-support是可选的gem,可以在继承MyEngine命名空间的同时扩展MyEngine gem。

MyEngine-blog,MyEngine的支持依赖于MyEngine的核心功能,两个gem都会在它们的gemspec文件中包含spec.add_dependency "synculus"

为依赖gem指定Rails::Engine的正确方法是什么?我是否必须在每个MyEngine-blog中指定class Engine < ::Rails::Engine ?myengine支持gem的引擎。rb文件?

# lib/myengine/engine.rb
module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine
  end
end
# lib/myengine/blog/engine.rb
module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine
    module Blog
    end
  end
end
# lib/myengine/support/engine.rb
module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine
    module Support
    end
  end
end

看看spree commerce是怎么做的吧。X版本,他们对rails引擎有很好的把握。

Spree Commercex engine.rb

相关内容

最新更新