Ruby on Rails

Ruby on Rails

Posts 1-10 of 12
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The company name is only visible to registered members.
    Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo,

    ich habe eine RoR Applikation installiert und nun möchte ich folgendes Erreichen:

    Bei Aufruf über

    domain.de => URL
    domain1.de => URL/xyz
    domain2.org => URL/test
    domain3.org => URL/zzz

    Die Domains verweisen auf den gleichen Server auf dem eine RoR Applikation installiert ist....Wenn möglich sollte das Ganze einfach zu konfigurieren sein....

    Ich kann mir selbstverständlich überlegen im Controller den HTTP-Header holen und das irgendwie lösen....aber ich vermute, dass es dafür schon eine Lösung gibt..... DRY ;-)

    Ein weitere Problem in dem Zusammenhang ist, ob folgendes geht:

    abc.de => URL/de (Content deutsch)
    abc.com => URL/com (content englisch)

    Die Frage ist, ob das nicht eventuell über eine GET Parameter gelöst werden muss ?

    Vielen Dank im Voraus.
    MfG
    Karl Heinz Marbaise
  • Joachim Reichel
    Joachim Reichel
    The company name is only visible to registered members.
    Re: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo Karl-Heinz,

    ich hatte letztes Jahr ein ähnlich gelagertes Problem und habe keine vorgefertigte Lösung gefunden.
    Da die Url ja die einzige für die Entscheidung zur Verfügung stehende Information ist, muss schon der Http-Header als Informant dienen.
    Eine Möglichkeit, die bei mir gut funktioniert, ist einen eigenen Basiscontroller mit einem before-Filter zu schreiben von dem dann Deine Controller erben - oder Du baust den Filter direkt in den Application Controller ein, wie im Beispiel:


    class ApplicationController < ActionController::Base
    before_filter :choose_route

    #...

    protected

    def choose_route
    url = request.headers["SERVER_NAME"]
    # Eingabe mit oder ohne www gleich behandeln
    url = url.gsub(/www./, "")
    case url
    when 'domain.de'
    path = domain_path # Definiton der Pfade in der routes.rb
    language = "deutsch"
    when 'domain2.org'
    path = 'domain2_org_path'
    language = 'englisch'
    else
    # default Deiner Wahl
    path = xy_path
    language = 'german'
    end
    redirect_to path, :language=>language

    end

    Vorteil: funktioniert zuverlässig und schnell, Nachteil : Hartcodierte Entscheidung
    Wenn sich die domains nach Fertigstellung nicht mehr, oder ganz selten ändern
    eine gute Lösung. Keine Magie, man sieht genau was passiert und schnell editiert ist es auch ;-)


    Ich hoffe ich konnte Dir eine Anregung geben.
    Viel Erfolg !

    Joachim
  • Dr. Torsten Becker
    Dr. Torsten Becker    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^2: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    In Advanced Rail Recipes von Pragmatic Programmers gibt es ein Rezept:

    Give Users Their Own Subdomain

    dass sowohl für Subdomänen als auch für Domänen über CNAME. Das Buch kann als PDF online gekauft werden, auf der Seite ist auch der Code zum Studieren.

    Torsten Becker
    BESTgroup Consulting & Software GmbH
  • Post visible to registered members
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^2: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo Joachim,

    Information ist, muss schon der Http-Header als Informant dienen.
    def choose_route
    url = request.headers["SERVER_NAME"]
    Da gibt es wohl auch noch request.host

    Das hat mir weiter geholfen...
    Danke..
    MfG
    Karl Heinz Marbaise
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^3: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo Herr Becker,

    In Advanced Rail Recipes von Pragmatic Programmers gibt es ein Rezept:
    Ich hätte das Buch besser lesen sollen....dann wäre ich darüber gestolpert....

    Vielen Dank für den Hinweis....

    MfG
    Karl Heinz Marbaise
    This post was modified on 27 Jan 2009 at 08:59 pm.
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^2: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo Herr Knarek,
    Da kann ich nur das Apache-Modul http://www.modrails.com/ empfehlen. Einerseits vereinfacht es den Produktionsbetrieb erheblich und bietet ausgezeichnete Performance. Andererseits unterstützt es auch auf ganze einfache Art und Weise den Betrieb von mehreren Apps aufgeteilt auf "Unterverzeichnisse".
    Die Konfiguration/Inbetriebnahme ist nicht viel schwerer, als einen "normalen" VirtualHost-Eintrag im Apache zu verwalten.
    Ich habe derzeit die RoR Anwendung per Apache Balancer laufen und im Hintergrund einen Mongrels-Cluster laufen....läuft sehr gut....
    Weiterhin hatte ich ja ein RoR-Applikation mit mehreren Domains die auf unterschiedliche Bereich der App weiterleiten bzw. auswählen sollten....

    Zu Modrails habe ich mehrfach gelesen, dass da davon abgeraten wird ?....

    Vielen Dank
    MfG
    Karl Heinz Marbaise.
  • Roman Sladeczek
    Roman Sladeczek    Premium Member
    The company name is only visible to registered members.
    Re^3: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Karl Heinz Marbaise schrieb:

    Zu Modrails habe ich mehrfach gelesen, dass da davon abgeraten wird ?....
    Warum wird davon abgeraten? Wer macht diese Aussagen?
    Deployment mit Phusion Passenger aka Modrails ist State-of-the-art und auch der vom Rails Team empfohlene Weg!?

    Beste Grüsse,
    Roman Sladeczek
    This post was modified on 27 Jan 2009 at 01:09 pm.
  • Post visible to registered members
  • Karl Heinz Marbaise
    Karl Heinz Marbaise    Premium Member   Group moderator
    The company name is only visible to registered members.
    Re^4: Mehrere Domains unterschiedliche Seiten/Controller - eine RoR Applikation
    Hallo,

    Warum wird davon abgeraten? Wer macht diese Aussagen?
    Deployment mit Phusion Passenger aka Modrails ist State-of-the-art und auch der vom Rails Team empfohlene Weg!?
    z.B.:
    http://www.guerilla-projektmanagement.de/index.php/archives/...

    Hm. Vielleicht habe ich ja nur nicht richtig gelesen....oder nicht genügend....

    Vielen Dank für die Hinweise....werde ich mir nochmal anschauen...

    MfG
    Karl Heinz Marbaise