РЕДАКТИРОВАТЬ: я нашел гораздо более простой способ: http://www.arctickiwi.com/blog/7-host-and-domain-based-routing-in-ruby-on-rails
Не совсем ответ, но это лучшее, что я могу дать. Может быть, это вам тоже поможет.
В идеале, это сообщение в блоге от transfs.com и subdomain-fu должно сработать. Однако я пытался реализовать это, и они, похоже, не очень хорошо играют вместе.
Обычно, если я не включаю инициализатор, маршрут субдомена работает нормально. Если я включаю инициализатор, маршрут субдомена ломается (все ловится map.root). У меня такое ощущение, что он строит строку условия в инициализаторе. Если вы сможете понять, как он ломается, у вас будет работающее приложение.
Мой инициализатор:
module ActionController
module Routing
class RouteSet
def extract_request_environment(request)
env = { :method => request.method }
env[:domain] = request.domain if request.domain
env[:host] = request.host if request.host<br>
env
end
end
class Route
alias_method :old_recognition_conditions, :recognition_conditions
def recognition_conditions
result = old_recognition_conditions
[:host, :domain].each do |key|
if conditions[key]
operator = "==="
if conditions[key].is_a?(Regexp)
operator = "=~"
end
result << "conditions[:#{key.to_s}] #{operator} env[:#{key.to_s}]"
end
end
result
end
end# end class Route
end
end
Мои маршруты (только для разработки). Вы увидите мой локальный домен разработки, stiltify.dev. Извините, я попытался сделать так, чтобы это выглядело хорошо здесь, но я не мог заставить блок кода выглядеть красиво. Я вместо этого положил его на пасти: http://pastie.org/940619.
Раздел комментариев в скринкасте Райана Бейтса был очень полезен и заставил меня выяснить поддомен => false и другие ошибки, в которые они попадали. Тем не менее, проблема не устранена!