我认为这是一个“方便”的解决方案,可以避免很多问题,但并不是最好的解决方案。
目前,我的RoR应用程序由以下文件系统结构组成:
# "users" and "blogs" are namespaces
RAILS_ROOT/app/controllers/users
RAILS_ROOT/app/controllers/blogs
RAILS_ROOT/app/models/users
RAILS_ROOT/app/models/blogs
RAILS_ROOT/app/views/users
RAILS_ROOT/app/views/blogs
...
我想在两个RoR应用程序中使用子域名切换“用户”和“博客”命名空间,以实现以下效果:
http://main.com # This is the main RoR application
http://users.main.com # This is another RoR application used to handle users
http://blogs.main.com # This is another RoR application used to handle blogs
简而言之,我认为我正在尝试扩展我的应用程序或者为每个RoR应用程序创建一个Web服务,但我的问题是:
1. 我可能会遇到哪些问题? 我注意到了一些关于维护会话的问题(在我的情况下,我使用cookie处理这些问题),但我认为这不是唯一的问题。
2. 如何处理我的情况下三个RoR应用程序之间的通信? 我注意到我可以使用ActiveResource来共享信息,但我必须注意诸如用户身份验证之类的信息。
- 我是否需要实现OpenID/Oauth协议以维护用户身份验证? - 我认为我必须确保HTTPS连接中的用户身份验证信息,即使通信是在子域之间。这是真的吗?
3. 我如何组织我的工作和资源? 总之,我想要有三个RoR“易于”且独立的应用程序,而无需在每个应用程序中使用名称空间,并且它们之间可以相互通信。我不想使用(绝对不)插件或gems,但如果需要,我想要实现自己的handler。
# "Main" application for http://main.com
ROOT_MAIN/app/controllers/
ROOT_MAIN/app/models/
ROOT_MAIN/app/views/users
...
# "Users" application for http://users.main.com
ROOT_USERS/app/controllers/
ROOT_USERS/app/models/
ROOT_USERS/app/views/users
...
# "Blogs" application for http://blogs.main.com
ROOT_BLOGS/app/controllers/
ROOT_BLOGS/app/models/
ROOT_BLOGS/app/views/users
...
顺便提一下: 我正在使用的命名空间是一个好的方法吗?
P.S.: 如果您需要其他信息,请告诉我,我会更新问题。
*来自O2软件流程:“扩展”是指向现有群集添加更多服务器的概念,而“升级”则意味着用更新(更快)的服务器替换现有(较慢)的服务器。