2016-07-29 13 views
2

Ich arbeite daran, Subdomains in meiner Rails-App für verschiedene Blogs hinzuzufügen, die auf der Site gehostet werden (example.blogthing.com vs example2.blogthing.com). Diese Seite wird auf Heroku gehostet.Bereitstellen von Subdomains aus der App "Roots in Rails" während der Ausführung auf Heroku

Nun fand ich dieses answer on how to set up subdomain Routing, und es funktioniert lokal wie so in meiner Roots-Datei:

Rails.application.routes.draw do 
    resources :posts 
    resources :comments 

    root :to => "pages#home", :constraints => { :domain => "blogthing.com" }, as: nil 
    root :to => "setup#index" 

Jetzt, wo es zu Heroku eingesetzt ist, ich bin ein Problem bemerken. Wenn ich zur Stammdomäne gehe, wird sie korrekt nach Hause weitergeleitet. Wenn ich eine Subdomain hinzufüge, zeigt der Browser einen Fehler an, dass diese Site nicht erreicht werden kann.

Gibt es ein Problem mit der oben beschriebenen sehr einfachen Strategie, die anders implementiert werden müsste, um mit Heroku zu arbeiten?

Ich sollte auch beachten, dass ich meine DNS meiner Kundendomäne Targeting meiner Heroku-Website habe - also versuche ich dies mit einer echten .dom-Domain, nur meine example1. davor setzen.

Antwort

0

Ok, nach ein paar Tagen der Fehlersuche, möchte ich dies aufklären, falls jemand diese Frage in der Zukunft braucht.

Wenn Sie eine Rails-App mit einer benutzerdefinierten Domäne auf Heroku ausführen, sind die Schritte in Heroku erforderlich, aber auch überall dort, wo Ihre Domäne gehostet wird. Hier sind meine Schritte, und es funktioniert jetzt erfolgreich.

Erstellen Sie zuerst einen Datensatz der benutzerdefinierten Domäne in Heroku. Ich tat dies von der Befehlszeile, indem ich heroku domains:add www.blog.example.com oder was auch immer laufen ließ. Dies gibt uns nun eine benutzerdefinierte Domain, auf die wir von unserem DNS verweisen können.

Zweitens müssen wir einen Datensatz auf dem Domain-Host erstellt haben, um auf diese Subdomain zu zeigen. Ich nutze Google Domains, indem ich zu Einstellungen> Benutzerdefinierte Ressourcen gehe und eine neue Ressource für www.blog. zur Übereinstimmung mit dem Heroku-Eintrag erstelle.

Dies ist nun auf beiden Seiten vorhanden, so dass der letzte Schritt es der App ermöglicht, korrekt zu routen. In meiner Roots.rb Datei, fand ich this guide und angepasst es get statt match für Rails zu verwenden 4:

get '/' => 'blog#index', :constraints => { :subdomain => 'www.blog' } 
root :to => "pages#home" 

Und damit entfalteten ich Heroku und es funktioniert, dass die Einschränkung verwenden. Ich hoffe, das hilft.