【问题标题】:Running 2 websites off of same Rails codebase?从同一个 Rails 代码库运行 2 个网站?
【发布时间】:2011-12-03 20:49:28
【问题描述】:

我目前正在为单个客户端开发 2 个具有相同功能的站点,但客户端希望在后端结合管理员以方便使用。这些站点将共享一个数据库、用户表等。

我如何设置 Rails 应用程序,以便域名是确定用户注册哪个站点以及他们在登录时看到什么内容的唯一标志?

详情

我有两个摄影网站:photosoftrains.complanephotos.com。这些站点将具有相同的功能,但视觉设计完全不同。访问 photosoftrains.com 的站点访问者应该会看到火车站点(火车背景、火车内容、火车照片)。如果他们注册,他们可以评论火车照片并将其上传到网站。 如果同一个登录用户访问 planephotos.com,他们将不得不重新注册才能与该站点进行交互。否则,他们仍然可以以未注册用户的身份浏览该网站。

婴儿步

  1. 检测域名并将未登录用户重定向到相应主页的最佳方法是什么?
  2. 如何在用户开始与某个特定站点交互时设置全局变量,以便浏览或添加内容与另一个站点完全隔离,但尽可能高效?

这是否可能,或者我应该将它们分成两个完全不同的应用程序,只共享数据库?

【问题讨论】:

  • 是的,我担心他们会在一年后回到我身边并要求我添加汽车图片.com :-)
  • 我认为即使是两个单独的应用程序使用同一个数据库也可能是一个错误,如果为两组截然不同的数据共享同一个表,您会遇到很多麻烦。
  • 从我与他们的讨论来看,他们似乎打算在未来的某个时候将它们合并在一起。当然,我不会假设这会真的发生,但我会在开发应用程序时牢记这一点。到目前为止,他们向我展示的内容似乎只是文章、cmets、照片和用户。什么可能出错?哈哈

标签: ruby-on-rails architecture


【解决方案1】:

我通常为 Admin 部分做的是创建一个带有子域的单独命名空间(也就是说,在 app/controllers 下创建一个单独的目录)。本质上,视图和控制器都是不同的,但模型都是一样的。

在我的路由文件中,我通过以下方式为子域创建了一些约束:

constraints(:subdomain => /admin/) do
   namespace :admin do
       resources :mymodel # ......
   end
end

您不想要一个子域,您想要一个完全独立的域。你可以试试这个链接:Rails routing to handle multiple domains on single application

就设置全局变量而言,如果您创建单独的命名空间并相应地进行路由,则无需这样做。

【讨论】:

    【解决方案2】:

    制作两个应用程序。当它发生时处理合并。

    您以后总是可以将一个数据库播种到另一个数据库中。

    制作一个包含所有模型和控制器逻辑的应用。开始设计工作时,使用 git 创建两个独立的分支。

    他们将来在合并两个网站时可能会遇到一些问题,因为用户可能不喜欢他们突然在他们没有注册的页面上拥有一个帐户。

    在这种情况下,我真的会讨论两个站点的需求。只有一个有很多可靠的论据。他们可能有他们的理由,但从技术角度来看,两个不同的应用程序是最好的方法。

    Rails 是“约定优于配置”。这个场景会给你一场史诗般的战斗,有很多配置问题。而且你不想打架。

    拥有一个应用程序的唯一优势是组合管理员。但是,这必须有两个单独的用户列表(以及您拥有的所有其他模型)。所以,这就像拥有两个单独的管理员一样痛苦

    【讨论】:

      【解决方案3】:

      构建两个独立的应用程序在未来可能会成为维护难题,但另一方面,为每个应用程序隔离数据可能会导致数据库级别的问题。如果您决定构建一个应用程序,您可以在视图文件夹中创建不同的文件夹并将不同的视图分开。 request.url 会给你网址。最好与客户讨论可能影响您的实施的任何未来更改。

      附言。我会去两个单独的应用程序。对我来说,这是解决这种情况的最安全方法。任何未来的更改和升级都可以轻松地对其中一个应用程序进行并转移。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        相关资源
        最近更新 更多