2009-08-18 2 views
3

Ich kann die folgenden Befehle in der Konsole für meine Rails-Anwendung ausführen und CSV-Datei in meine Datenbank importieren.Ausführen von Ruby-Skript in einer Rails-Anwendung

Allerdings möchte ich den Prozess erleichtern, indem Sie nur ein Skript dafür erstellen. Das Problem ist, ich weiß nicht, wie man ein Skript schreibt, das anwendungsspezifisch ist. Damit die oben genannten Befehle auszuführen, muss ich Konsole im Anwendungsordner durch die folgende starten:

ruby script/console 

So einfach Kopieren/Einfügen der Befehle in eine Datei .rb und Ausführung wird nicht funktionieren.

Jede Hilfe wird immer geschätzt werden :)

Antwort

5

Warum nicht script/runner "<code or filename here> verwenden? um das Skript auszuführen? Das Runner-Skript führt das Skript im Kontext der Anwendung aus, ohne eine Konsole zu haben.

+0

haha ​​Rails ist genial;) Danke! – b1gtuna

+1

Eine bessere Lösung wäre eine Rake-Aufgabe. –

+2

In 3.0+ verwenden Sie 'rails runner path/to/script'. Hinweis: Der Pfad zu Ihrem Skript ist relativ zu Ihrem Projektstamm, nicht zu Ihrem Arbeitsverzeichnis. –

1

Sie müssen die Schienen-Umgebung im Skript aufzurufen.

Versuchen Sie, diese an der Spitze der Sie mit dem Hinzufügen-Datei:

RAILS_ENV = ARGV[0] || "production" 
require File.join(File.dirname(__FILE__), *%w[.. config environment]) 
# assumes script is placed one level below the root of the application 
# second parameter is the relative path to the environment directory of your rails app 
2

Sie könnten es zu einer Rake-Aufgabe machen, die von der Umgebung erbt. Legen Sie sie in lib/Aufgaben/your_task.rake:

task :your_task => :environment do 
    # code goes here 
end 

Dann führen Sie es rake your_task verwenden. Es kann alles genannt werden, was Sie wollen.

Verwandte Themen