1

I would like create web app like shopify.com. User can pickup subdomain(or domain), theme and have own store.

How can I do this? Create main application, deploy it automatically like new standalone version and update it via git?

I'm using Rails 3. Thanks for your advice.


Based on replies: When I choose to use only one application (without multiple instances) and give user his subdomain, it will looks like their own website. But everything will be in one database (It's good idea?). And how can I have multiple themes in Rails app?

4

2 回答 2

6

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

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

于 2012-08-24T15:55:07.150 回答
1

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

当然,您需要有一个支持多个子域的应用程序。快速谷歌搜索给了我 [ 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正在使用的子域 ( ),并且需要在 session.xml 中设置它。
  4. 现在,当有人尝试登录时,您必须在该子域帐户的上下文中验证该帐户
  5. 实际上,以下所有操作都需要在子域帐户的上下文中处理。

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


编辑:

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

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

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

于 2012-08-24T16:16:27.660 回答