Я пытаюсь получить разумное понимание того, как можно создать приложение поверх ruby / rack (или, что еще лучше, существующей инфраструктуры), которое управляет чем-то эквивалентным WordPress. В частности, с возможностью обслуживания нескольких сайтов из одной и той же кодовой базы, каждый со своими особенностями и конфигурацией.
Предположим, например:
- example.com с использованием аутентификации, страниц, блоговых модулей
- forum.example.com -> auth, модули форума
- api.example.com -> auth, api modules
Этот тестовый пример работает, в том числе в производственной среде:
# 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 и т. Д. )
Эти две темы иллюстрируют то, о чем я беспокоюсь: