【问题标题】:Multisite application in Rails (like shopify.com)Rails 中的多站点应用程序(如 shopify.com)
【发布时间】:2012-08-24 14:33:50
【问题描述】:

我想创建像 shopify.com 这样的网络应用。 用户可以选择子域(或域)、主题并拥有自己的商店。

我该怎么做? 创建主应用程序,像新的独立版本一样自动部署它并通过 git 更新它?

我正在使用 Rails 3。 谢谢你的建议。


根据回复: 当我选择只使用一个应用程序(没有多个实例)并给用户他的子域时,它看起来就像他们自己的网站。但一切都将在一个数据库中(这是个好主意吗?)。我如何在 Rails 应用中拥有多个主题?

【问题讨论】:

  • 有大量关于这个主题的信息。第一页链接here非常相关。
  • 试图在多个主题选项上积累一些想法。看看你能不能从中得到什么想法。

标签: ruby-on-rails ruby shopify


【解决方案1】:

看看LocomotiveCMS,特别是routing system。 Locomotive 实际上在单个 Rails 应用程序中托管多个站点。它通过在请求 URL 进入时检查请求 URL 并使用设置为处理域的站点设置 current_site 变量来做到这一点。那么current_site 实际上只是一个对象,其中包含正在服务的特定站点的所有页面、内容、设置等。

所以要回答您的问题,我认为一个好的解决方案是让您的 rails 应用程序能够根据域为多个站点提供服务。这并不难,而且对我来说,它似乎不如尝试自动部署应用的新实例那么脆弱。

【讨论】:

  • 谢谢,我认为最好只制作单轨应用
【解决方案2】:

到目前为止,我已经了解,您想让您的用户拥有自己的子域,不同的主题,但功能应该是一样的。用户只需要有自己的感觉。

当然,您需要有一个支持多个子域的应用程序。 快速谷歌搜索给了我 [http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails]。也许您可以从这里获得一些见解。

例如,如果你的服务是http://www.myfi.com,一个简短的想法可以是:

  1. 当客户注册时,您应该让他选择他的子域。并且新创建的帐户将通过 url 与此子域相关联。说,http://customer1.myfi.com
  2. 您应该注册域*.myfi.com,这样世界上任何人都可以使用anysubdomain.myfi.com,它会出现在您的应用程序中。
  3. 然后从 url 部分,您应该识别正在使用的子域(customer1),并且需要在会话中设置它。
  4. 现在,当有人尝试登录时,您必须在该子域帐户的上下文中验证帐户
  5. 实际上,以下所有操作都需要在子域帐户的上下文中处理。

刚刚尝试收集一下这里的实现。如果您对某些特定的事情感到困惑,也请分享。


编辑:

当您考虑多个主题时,您必须有完全由 css 和 js 驱动的简单设计。 app/view 文件应该只包含带有类名或 ID 的内容和 HTML 节点。

一般来说,UI 设计师可以就如何制作这样的主题机制提出更多有用的想法。但我能感觉到的是,根据客户选择的主题,你必须加载不同的css和js。

实际上,这些策略可以无限复杂且可扩展,但从简单的事情开始总是明智的。然后想法会自动演变成更好的想法。

【讨论】:

  • 谢谢,我认为最好只制作单轨应用
猜你喜欢
  • 2011-12-26
  • 2012-01-20
  • 1970-01-01
  • 2010-12-24
  • 2017-03-20
  • 1970-01-01
  • 2011-07-18
  • 2016-08-25
  • 1970-01-01
相关资源
最近更新 更多