0

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

MyEngine-blog 和 MyEngine-support 依赖于 MyEngine 的核心功能,这两个 gem 都将包含spec.add_dependency "synculus"在它们的 gemspec 文件中。

Rails::Engine为依赖项指定 gem的正确方法是什么?我是否必须class Engine < ::Rails::Engine在每个 MyEngine-blog 和 MyEngine-support gem 的 engine.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
4

1 回答 1

1

看看 spree commerce 在他们的 2.x 版本中是如何做到这一点的,他们对 Rails 引擎有非常好的把握。

Spree Commerce 2.x 引擎.rb

于 2014-03-26T23:56:04.637 回答