Субдомены в рельсах 4.1

88
9

Я пытаюсь настроить приложение rails 4.1 с несколькими поддоменами, я вижу Rails Casts - # 221, но у меня есть проблемы:


Мой домен в производстве: transporte.adm.br * пока ничего не показывать!
Поскольку у него есть 2 домена adm.br, я не могу выполнить эту работу.


Мой/etc/hosts:


127.0.0.1   localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
127.0.0.1 transporte.adm.br
127.0.0.1 *.transporte.adm.br

routes.rb:


Rails.application.routes.draw do

get '/' => 'login#index', :constraints => { :subdomain => /\bsecure\b/ }

resources :client
constraints(Subdomain) do
get '/' => 'client#index'
end

root :to => 'home#index'
end


url_helper:


 module UrlHelper
def with_subdomain(subdomain)
subdomain = (subdomain || '')
subdomain += '.' unless subdomain.empty?
[subdomain, request.domain(2), request.port_string].join
end

def url_for(options = nil)
if options.kind_of?(Hash) && options.has_key?(:subdomain)
options[:host] = with_subdomain(options.delete(:subdomain))
end
super
end
end


subdomain.rb:


class Subdomain
def self.matches?(request)
request.subdomain(2).present? && request.subdomain(2) != 'www'
end
end

То, что я пытаюсь сделать, это: Когда я получаю доступ к маршруту secure.transporte.adm.br = > 'login # index' и когда я обращаюсь к любому другому пути субдомена к = > 'client # index' без субдомена to = > 'home # index


С lvh.me:3000 Работает нормально, но когда я пытаюсь с моим доменом transporte.adm.br нет!
Когда я получаю доступ к любому маршруту с транспортом .adm.br, ничего не происходит...


Спасибо всем!

спросил(а) 2021-01-25T11:08:14+03:00 4 месяца, 2 недели назад
1
Решение
63

Что вам нужно сделать, так это указать Rails длину вашего TLD.


добавьте это в правильную среду (config/environments/production.rb скорее всего)

config.action_dispatch.tld_length = 2


а затем request.subdomain должен автоматически вернуть правильные части.

ответил(а) 2021-01-25T11:08:14+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема