gpt4 book ai didi

ruby-on-rails - 横向扩展 : how to handle communication between Ruby on Rails applications?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:05 26 4
gpt4 key购买 nike

我正在运行 Ruby on Rails 3,我有一个应用程序使用 namespace 来处理更多“内部概念”。对于“内部概念”,我的意思是每个 namespace 都用于处理我的应用程序的特定资源。例如,命名空间是“users”,它用于处理用户的 session 和授权,另一个命名空间是“blogs”,它用于处理所有关于帖子和评论的信息。

我认为这是避免很多问题的“方便”解决方案,但不是最好的。

此时我的 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 应用程序中切换“users”和“blogs”命名空间,使其具有如下内容:

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 应用程序创建一个网络服务,但我的问题是:

1. 我可能会遇到什么问题?

我注意到在应用程序之间维护 session (在我的例子中我使用 cookie 处理 session )方面存在问题,但我认为这不是唯一的问题。

2. 在我的案例中如何处理三个 RoR 应用程序之间的通信?

我注意到我可以使用ActiveResource来共享信息,但是我必须注意用户身份验证等信息。

  1. 我必须实现 OpenID/Oauth 协议(protocol)才能维护用户身份验证吗?

  2. 我认为如果通信在子域之间,我也必须确保使用 HTTPS 连接的用户身份验证信息这是真的吗?

3. 如何组织我的工作和资源?

尽管如此,我不想使用(绝对)插件或 gem,但是,如果我需要,我想实现我自己的处理程序

最后,我希望有 3 个 RoR “简单”和独立的应用程序,每个应用程序都没有使用 namespace ,并且可以相互通信:

# "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.:如果您需要其他信息,请告诉我,我会更新问题。


*来自The O2 Software Process :“向外扩展”是指向现有公园添加更多服务器的概念,与“向上扩展”相反,“向上扩展”是指用更新(和更快)的服务器替换现有(慢速)服务器。

最佳答案

你的问题比你想象的要简单得多。这完全取决于您如何处理路线。

Ruby On Rails 3 更好地支持子域。因此,您无需将它们分成三个/更多 RoR 应用程序。您可以将所有代码放在一个 RoR 应用程序中。并将 user.abc.com 重定向到任何 Controller ,如“用户/ session ”,将 blog.abc.com 重定向到“博客/博客” Controller 。命名空间在像您这样的应用程序中很方便,它们使您的工作非常快速,可以在不同的文件夹和路由格式中将应用程序的上下文不同部分分开。

尽情尝试命名空间,我相信您不会遇到您现在想象的任何错误。我建议你为它编写代码,如果你遇到问题就来这里。

关于ruby-on-rails - 横向扩展 : how to handle communication between Ruby on Rails applications?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com