在ruby中使用单个代码库的多个应用程序
我试图理解如何在ruby / rack(或者更理想的是,现有框架)之上构建一个应用程序来管理与WordPress等效的东西.具体而言,能够从相同的代码库服务多个站点,每个站点都有自己的功能和配置.
例如,假设: > example.com使用auth,pages,blog模块 这个测试用例似乎有效,包括在生产环境中: # 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 解决方法
我想你可能有点过于复杂.您可以使用Web服务器配置轻松地将不同的子域指向不同的Rails应用程序.例如,在Nginx中,您只需创建不同的虚拟主机.
如果您希望一个应用程序中包含所有模块,那么您可以拥有一个带有通配符子域的虚拟主机,并使用Rails应用程序中的路由通过子域路由到应用程序的不同部分.这将非常适合Engine架构. 关于数据库,在第一个示例中完全没有问题,因为不同的应用程序可以处理自己的数据库连接.使用引擎示例,通常引擎表将位于同一数据库中但名称空间. 编辑 – 我的答案是专门讨论Rails,而你的问题更通用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |