0

在作为isolate_namespace Rails引擎gem的父模块中嵌套子模块的正确语法是什么?

# lib/myengine/engine.rb
module MyEngine
  class Engine < Rails::Engine
    isolate_namespace Myengine
    # def ...
  end
end

例如。父模块是 MyEngine,子模块是 Blog。MyEngine 将共享公共域,如 CRUD、Taggable、Searchable 等,这将保持 gem 代码 DRY 并与主应用程序(MyApp)隔离,同时继承隔离的命名空间和引擎。

这两种方法中的任何一种都正确吗?有什么重构建议吗?

# A
# lib/myengine/blog.rb
module MyEngine
  module Blog
    # def ...
  end
end

# B
# lib/myengine/blog.rb
module MyEngine
  class Engine < Rails::Engine
    isolate_namespace Myengine
    module Blog
      # def ...
    end
  end
end
4

1 回答 1

1

选项 A. 是正确的,但应该是lib/my_engine/blog.rb您可以在此处阅读有关 Ruby 和 Rails 命名约定的更多信息。

此外,如果您想在 blog 命名空间下放置更多模块或类,请将它们放在文件夹中lib/my_engine/blog并将它们嵌套在MyEngine::Blog.

于 2013-05-02T17:56:56.433 回答