rubyforen.de
http://forum.ruby-portal.de/

URL in Klasse auslesen
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26730
Seite 1 von 1

Autor:  etron770 [ 22 Dez 2015, 15:03 ]
Betreff des Beitrags:  URL in Klasse auslesen

Ich arbeite mir mehreren Programmiersprachen aber nicht mit Ruby, habe aber nur eine kleine Änderung. Eventuell kann mir jemand helfen.

Ich bräuchte hier (innerhalb der Klasse Mailer) die URL (ohne Pfad)

http://www.redmine.org/builds/coverage/app__models__mailer.rb.html

Grüße Knut

Autor:  NobbZ [ 22 Dez 2015, 15:24 ]
Betreff des Beitrags:  Re: URL in Klasse auslesen

1. Die URL wovon?
2. Was genau meinst du mit "URL ohne Pfad"?
3. Soweit ich das eben gesehen habe stehen die URL-Helper zur Verfügung, also kannst du URLs zu beliebigen Zielen innerhalb der App generieren wie überall anders auch.

Autor:  etron770 [ 22 Dez 2015, 15:51 ]
Betreff des Beitrags:  Re: URL in Klasse auslesen

Die URL mit der die Seite aufgerufen wurde
also
    domain1.com/irgendwas
    domain2.com/irgendwas
    domain3.com/irgendwas
    usw...

URL-Helper schaue ich mir mal an
Ohne Pfad: als nur domain1.com aber das ist Zweitrangig. Das bekomme ich alleine hin

Etwas genauer erklärt, möchte ich Setting.host_name mit domain?.com ersetzten, wenn Setting.host_name einen bestimmten code enthält z.B [URL]
Was aber auch nicht die Frage ist, das kann ich alles selber.
Ich finde derzeit nicht heraus mit welcher Domain Redmine aufgerufen wurde.

Autor:  Quintus [ 22 Dez 2015, 16:45 ]
Betreff des Beitrags:  Re: URL in Klasse auslesen

Wenn ich dich richtig verstehe, dann möchtest du eine URL parsen. Dafür hat Ruby die uri-Bibliothek in der stdlib:



1
2
3
4
5
6
7
8
irb(main):001:0> require "uri"
=> true
irb(main):002:0> u = URI.parse("http://domain1.com/irgendwas")
=> #<URI::HTTP http://domain1.com/irgendwas>
irb(main):003:0> u.host
=> "domain1.com"
irb(main):004:0> u.path
=> "/irgendwas"


Hilft das?

Vale,
Quintus

Autor:  NobbZ [ 22 Dez 2015, 16:55 ]
Betreff des Beitrags:  Re: URL in Klasse auslesen

Quintus hat geschrieben:
Wenn ich dich richtig verstehe, dann möchtest du eine URL parsen. Dafür hat Ruby die uri-Bibliothek in der stdlib:


So wie ich ihn verstehe, möchte er genau das nicht. Bzw nur in zweiter Instanz.

Hier scheint eher folgendes der Fall zu sein:

Die Redmine-Instanz ist über mehrere Domains zu erreichen und im Mailer möchte der OP wissen über welche Domain jetzt das Event kam welches den Versand der Email notwendig macht.

Dieses ist wenn ich mich recht an das Zusammenspiel zwischen Mailer und Rails erinnere aber nicht möglich, denn der Mailer tut seinen Job in der Regeln asynchron zum Request und die Daten des Requests stehen diesem daher konzeptionell grundsätzlich nicht zur Verfügung.

Du wirst also innerhalb des Requests bereits diese Daten extrahieren müssen und dem Mailer irgendwie mitgeben.

Autor:  etron770 [ 22 Dez 2015, 17:45 ]
Betreff des Beitrags:  Re: URL in Klasse auslesen

Zitat:
So wie ich ihn verstehe, möchte er genau das nicht. Bzw nur in zweiter Instanz.

Genau

Zitat:
Du wirst also innerhalb des Requests bereits diese Daten extrahieren müssen und dem Mailer irgendwie mitgeben.


Das war mein erster Ansatz und genau da blicke derzeit bei Ruby noch nicht durch...

http://www.redmine.org/builds/coverage/app__controllers__settings_controller.rb.html
Bei Zeile 47 wird @guessed_host_and_path = request.host_with_port.dup gesetzt. Das ist eigentlich alles was ich brauche

Das wird in den Settings als Vorschlag benutzt was man in die host_name eingeben könnte und entspricht genau der URL
Das finde ich in der http://svn.redmine.org/redmine/trunk/app/views/settings/_general.html.erb
Darüber ist host_name da steht das drin was man als Text für die URL eingibt, die dann der Mailer ausgibt. Nützt aber an dieser Stelle nichts denn der Wert wird in die Datenbank eingetragen. - Tabelle settings -> host_name

Und hier hört es auf mit dem Verständnis der Logik für Ruby auf ... wenn ich das richtig gelesen habe ist das bei Ruby anders
Wie dieser Datenbankwert dann an den Mailer weitergegeben wird finde ich nicht.

Die beste Stelle wäre wohl, wenn die Datenbank ausgelesen wird und die Setting.host_name gesetzt wird.

An der Stelle könnte ich dann wenn der Text bei den Settings z.B [URL] ist, die richtige URL weitergeben, da müsste die URL ja vorhanden sein.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/