【发布时间】:2014-05-13 18:00:01
【问题描述】:
是否可以在一个公共命名空间下创建整个 Rails 应用程序?
假设我的公司名称是 Acme, Inc.,并且我有以下 Rails 项目:博客、商店、WebService。
默认情况下,如果我执行rails new blog 之类的操作,生成的应用程序将如下所示:
module Blog
class Application < Rails::Application
module Store
class Application < Rails::Application
module WebService
class Application < Rails::Application
每个项目/应用程序都是独立的,并且没有对公司的隐含引用。理想情况下,我希望将所有这些应用程序都放在公司命名空间下,因此我们可以将它们称为:
AcmeInc::Blog::Application
AcmeInc::Blog::Entities::Article
AcmeInc::Store::Application
AcmeInc::Store::Entities::Product
AcmeInc::Store::Entities::Order
AcmeInc::Store::Entities::Customer
etc...
这可能吗?推荐?
使用: ruby-2.0.0-p451,导轨 3.2.17
更新
按照建议执行 rails new acme/blog 后生成的文件和项目结构的快照:
【问题讨论】:
-
那么如何调用该类方法以及在何处包含该模块?
-
这三个应用程序应该相互独立。类方法和模块的调用方式应与在默认应用程序上调用它们的方式相同。包括 AcmeInc 只是将所有这些应用程序分组在公司的代码库标识符下。这是 .net 世界上非常常见的过程,但我不确定 ruby/rails 应用程序是否应该遵循相同的模式,因此我提出了问题。
-
该分组有什么用途?如果您正在尝试拥有共享某些元素并进行交互的自包含应用程序,您可能需要查看Rails engines。如果您关心的只是用于装饰目的的名称空间,我认为您可能会在那里与一些约定作斗争。
-
@tirdadc 我的大部分项目(至少在过去 10 年左右)都是 Microsoft-.Net 应用程序,我相信它是我提到的命名空间代码的扩展实践。它有点超出化妆品的范围,但不一定是必需的。我的问题是关于我是否应该遵循我的旧做法和惯例或只是适应(没问题!)适应 RoR 方式的建议。
-
@tirdac 我相信您是第一个通过建议使用引擎来回答我的问题(“这可能吗?推荐?”)并放弃我试图从中导入的命名空间的概念.Net 到 RoR。如果您将您的评论作为答案,我很乐意选择它作为我的问题的解决方案。谢谢!
标签: ruby-on-rails ruby-on-rails-3 namespaces project-structure