我正在构建一个命名空间的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