meine 2 cents:
also script/runner ist dafür da, um Ruby-Code im Context deiner Rails-Anwendung laufen zu lassen. Es kann als Befehl, so wie 'script/server' angesehen werden und sollte nicht verändert werden.

2 Möglichkeiten den runner zu benutzen:

1. ./script/runner 'puts Person.find(1).name'

2. ein anderes Script bauen mit '#!/usr/bin/env /home/rails/<app_dir>/script/runner' als erste Zeile. das kannst du dann einfach aufrufen und wird dann automatisch in der Rails Applikation ausgeführt.

Eine gute Hilfe ist es, einfach mal './script/runner -h' einzugeben. ;-)

-Alex



Daniel Weinand wrote:
Ok, so habe ich es jetzt auch gemacht. Also im Prinzip so wie Martin es geschreiben hat, und du jetzt auch nochmal drauf hingewiesen hast. Scheint jetzt auch wie erwartet zu funktionieren.

Ich glaube ich hattte das auch falsch verstanden. Die Methoden die in den Web Beispielen gezeigt wurden, wurden wohl in den Models erstellt, und dann per Runner aufgerufen. Ich dachte man müsste die Funktion im Runner Script selbst implementieren. Habe es so jetzt nicht versucht weil ich kein Session Modell habe, und auch nicht wirklich brauche. Werde das Ganze aber mal mit was anderem Testen. Weil so sollte es
dann wohl gedacht sein.

Danke an alle die geholfen haben. :)

Gruss


Jens Kraemer schrieb:
On Fri, Jan 04, 2008 at 03:27:13PM +0100, Daniel Weinand wrote:
wo liegt denn dein script? Damit dein Aufruf funktioniert müsste die
SessionCleaner-Klasse vom Rails-Autoloader aufgefunden werden können,
d.h. bspw. in lib/session_cleaner.rb deklariert sein. Da drin sollte
dann auch kein require und keine Interpreter-Deklaration drin sein - das
macht ja alles script/runner schon.
Alternativ kannst du das SessionCleaner.remove_stale_sessions auch in
die Datei selbst reinschreiben, und dann nur den relativen Pfad zur
Datei als Argument an runner übergeben.
Der eben gepostete Code ist der komplette Inhalt von [RAILS_APP]/script/runner.
Ist also kein sep. Script welches nicht gefunden werden könnte.

Hm, also ich würde nicht empfehlen script/runner zu verändern.

script/runner ist ja dazu da, *beliebige* übergebene Kommandos (oder
auch skripte) im Kontext deiner Anwendung auszuführen. natürlich kannst
du Klassendeklarationen die du nur für so ausgeführte Sachen brauchst
dort drin machen, aber die entscheidende Zeile aus dem originalen
runner-Skript:

require 'commands/runner'

sollte am Ende erhalten bleiben, die sorgt nämlich dafür dass die
Argumente des Skript-Aufrufs (also dein SessionCleaner-call) ausgeführt
werden.


Grüße,
Jens


_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an