2014-02-16 140 views
0

我正在寻求一些有关此问题的一般洞察力和建议,而不是针对问题的具体解决方案。Rails 4 Subdomain最佳实践

我目前正在开发一个需要管理员子域的应用程序,例如:admin.mydomain.com,这个管理子域将处理所有的事情,比如管理用户和设置面板内的内容以及API调用Dropbox和什么不。

一般来说,面板会与网站公共端的现有模型和控制器有点交叉,并管理由管理员用户提交的自己的内容。

有人说这应该怎么去设计这个应用程序?

鉴于我的筹码包括:

  • Nginx的
  • 的Phusion客运
  • Ubuntu的
  • 轨道4

我一点儿也不知道是否不小于2应用程序就是这样,因为我不知道在同一台服务器上托管2个应用程序的最佳方式。然后有两个不同的进程需要更大的内存需求,以及两个应用程序之间的路由问题。相反,如果这是一个单一的应用程序,我需要设置一些时髦的路由,以确保像编辑用户这样的东西只有在admin子域下才能登录管理员。

随着所有的内容在线阅读,它给了我如何设置一些'物理'的合理理解(虽然我仍然不确定在该领域),但我仍然不知道如何构建这个,2个应用程序或1,子域的最佳路由等等。

任何见识都会很棒,我非常喜欢泡菜。

回答

0

如果您决定使用两个应用程序,那么您可以在配置文件中明确设置admin.domain,并将其指向一个应用程序,然后设置www。一个指向另一个域。

我在我编写的应用程序上做过这件事,但与您的结构有点不同。 您是否可以不按照导轨指南使用控制器名称空间?如果没有,那么Railscasts在子域上有一些很好的信息。

http://railscasts.com/episodes/221-subdomains-in-rails-3 http://railscasts.com/episodes/123-subdomains-revised

1

如果我是你,我会去与单一的应用程序,因为它有很多优点:

  • 更高的性能,因为有较少的内存由单个应用程序消耗,然后通过倍数。
  • 代码更高的可维护性。
  • “应用程序”的“用户”和“管理”部分之间的通信更简单。
  • rails应用程序的内置路由机制本身支持这些场景。
  • 简单配置代理服务器(如nginx)来支持这一点。

如果您遵循我的想法,我会在路由中使用命名空间来分隔'user'和'admin'部分。并使用device gem在管理部分添加验证。

我有用这样的架构建立的多个应用程序,它的工作真棒! :)

0

除非有一个理由不,去从最简单可行的解决方案:

一个应用程序,其中包括正常部分以及管理员的东西。像这样,您可以从管理面板访问您的模型(或其他应用程序逻辑),而无需找到跨多个应用程序共享它们的方式。 开始构建和维护只需要更快。如果应用程序变得太大,您以后仍然可以随时拆分它。

至于如何:(!访问控制)的子域

  1. 路由约束送东西到右控制器
  2. 单独的控制器对所有管理的互动,最好命名空间的
  3. 分享模式或其他业务逻辑/对象(在控制器中没有业务逻辑!)
  4. 堆栈中的其他任何内容都不需要更改(所有逻辑都在导轨中)

在共享除两者之间的模型(或其他业务逻辑对象)之外的任何内容时要非常小心。这不仅会使结构减少“固体”,而且当您决定稍后拆分它时也会造成问题。