2017-03-14 2 views
0

Ich habe eine Rails-Anwendung mit zwei Sub-Domains als solche konfiguriert in routes.rbMit Schienen Domain Constraints mit Heroku Subdomains

Rails.application.routes.draw do 
    constraints subdomain: 'admin' do 
    devise_for :admin_users, ActiveAdmin::Devise.config 
    ActiveAdmin.routes(self) 
    end 

    namespace :api, defaults: { format: :json }, 
      constraints: { subdomain: 'api' }, path: '/' do 

    scope module: :v1, 
      constraints: ApiConstraints.new(version: 1, default: true) do 
     resources :countries, only: [:show, :index] 
    end 

    end 
end 

Das perfekt lokal arbeitet. Mein /etc/hosts sieht aus wie

admin.localhost.local localhost 
api.localhost.local localhost 

Aber wenn es darum geht, diese in Heroku zu konfigurieren, die Dinge nicht so sollte.

konfiguriert ich meine DNS und die benutzerdefinierten Domain Heroku so sein:

admin.my_project.my_domain.com -> admin.my_project.my_domain.com.herokudns.com 
api.my_project.my_domain.com -> api.my_project.my_domain.com.herokudns.com 

Aber wenn ich Zugang http://admin.my_project.my_domain.com Ich erhalte eine Routing-Fehler 404

Und die Protokolle haben dies:

heroku[router]: at=info method=GET path="/" host=admin.my_project.my_domain.com request_id=XXX fwd="IP.IP.IP.IP" dyno=web.1 connect=0ms service=3ms status=404 bytes=1744 protocol=http 
app[web.1]: INFO -- : Started GET "/" for IP.IP.IP.IP at 2017-03-14 
app[web.1]: FATAL -- : ActionController::RoutingError (No route matches [GET] "/"): 

Das bedeutet, dass wenn Rails die Anfrage erhält, nicht weiß, dass es ist kommt aus einer Subdomain.

Wie kann ich das schaffen? Danke

Antwort

0

Ok, ich habe es gelöst.

Ich musste dies auf die config/Umgebungen/production.rb

config.action_dispatch.tld_length = 2 

So hinzufügen, dass die Sub-Domain richtig ausgewählt wurde.