在ruby中使用单个代码库的多个应用程序

前端之家收集整理的这篇文章主要介绍了在ruby中使用单个代码库的多个应用程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图理解如何在ruby / rack(或者更理想的是,现有框架)之上构建一个应用程序来管理与wordpress等效的东西.具体而言,能够从相同的代码库服务多个站点,每个站点都有自己的功能和配置.

例如,假设:

> example.com使用auth,pages,blog模块
> forum.example.com – > auth,论坛模块
> api.example.com – > auth,api模块

这个测试用例似乎有效,包括在生产环境中:

# test.rb
class Foo
end

# config.ru
require 'rack'

use Rack::ShowExceptions
use Rack::CommonLogger

run lambda { |env|
  case env['HTTP_HOST']
  when /^test\./
    require './test'
    # answers true,regardless of subdomain loaded first
    [200,{'Content-Type'=>'text/plain'},"#{Kernel.const_defined? :Foo}"]
  else
    # answers false,"#{Kernel.const_defined? :Foo}"]
  end
}

然而,到目前为止,我们大部分都在几乎没有任何状态的环境中工作过,我有点紧张,这可能会回来并咬住我的道路.

无论如何,我错过了什么/我应该在哪里回来咬我? (由于文件重新加载而导致的性能?如果合适,需要重新初始化的数据库连接池?会话在不同域之间无效共享?除了明显的事实,任何缓存作为静态文件都是不合适的.)

并且,是否有任何应用程序允许开箱即用?

(我对Rails的初步印象是它不适合这样的用例.也许是错误的.我遇到的唯一多站点插件是允许example.com/site1,example.com / site2等)

这两个主题是我担心的例子:

> https://stackoverflow.com/questions/5823125/rails-multi-tenant-resource-loading
> Rails – Multi tenant application with customization framework

解决方法

我想你可能有点过于复杂.您可以使用Web服务器配置轻松地将不同的子域指向不同的Rails应用程序.例如,在Nginx中,您只需创建不同的虚拟主机.

如果您希望一个应用程序中包含所有模块,那么您可以拥有一个带有通配符子域的虚拟主机,并使用Rails应用程序中的路由通过子域路由到应用程序的不同部分.这将非常适合Engine架构.

关于数据库,在第一个示例中完全没有问题,因为不同的应用程序可以处理自己的数据库连接.使用引擎示例,通常引擎表将位于同一数据库中但名称空间.

编辑 – 我的答案是专门讨论Rails,而你的问题更通用.

原文链接:https://www.f2er.com/ruby/274174.html

猜你在找的Ruby相关文章