【发布时间】:2011-07-10 14:28:59
【问题描述】:
我试图对如何在 ruby/rack(或者更理想的是现有框架)之上构建一个管理与 WordPress 等效的应用程序有一个合理的理解。具体来说,能够从同一个代码库为多个站点提供服务,每个站点都有自己的功能和配置。
假设,例如:
- example.com 使用身份验证、页面、博客模块
- forum.example.com -> 认证,论坛模块
- api.example.com -> 身份验证、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, regardless of subdomain loaded first
[200, {'Content-Type'=>'text/plain'}, "#{Kernel.const_defined? :Foo}"]
end
}
到目前为止,我大部分时间都在几乎没有任何状态的环境中工作,但是,我有点担心这可能会卷土重来并在路上咬我。
无论如何,我错过了什么/我应该期待它在哪里回来咬我? (由于文件重新加载而导致的性能?如果适当,需要重新初始化数据库连接池?会话在不同域之间被无效共享?等等,除了任何作为静态文件缓存都不合适的明显事实。)
而且,周围有没有可以开箱即用的应用程序?
(我对 Rails 的最初印象是它不适合这样的用例。也许是错误的。我遇到的唯一多站点插件是允许 example.com/site1、example.com/site2 等。 )
这两个线程说明了我担心的问题:
【问题讨论】:
标签: ruby multi-tenant