Ruby-Skripten mit Zugriff auf Rails Modelle
Wo und wie führe ich ein einfaches Skript, das verwendet meine rails-Umgebung. Speziell habe ich eine Spalte, die enthält mehrere Stücke von Informationen, die ich Hinzugefügt habe, Spalten Sie sich jetzt für jede information und Notwendigkeit zum ausführen eines ruby-Skripts, das ausgeführt werden kann, rufen Sie eine Methode auf, die jede Zeile von der Datenbank zu extrapolieren Daten, und speichern Sie die neue Spalte.
- Jeder Grund, warum Sie nicht/sollten Sie nicht verwenden die migration zu speichern und der code ausgeführt?
- Nein. Ich weiß nicht, wie es zu tun. Das ist etwas, ich mag, um testen zu können, bevor Sie laufen, so Schreibe ich diese Skripte in teilen.. zeigen Sie mir die Objekte im gehend zu beeinflussen - krank-Grenze zu 200 first, dann werde es ausführen. Dies ist eine Tabelle mit 2 Millionen+ Zeilen, so dass ich nicht wollen, nur führen Sie eine migration, weil wenn es fehlschlägt habe ich abgeschnitten, und re-importieren. es geht 30 Minuten.
- 5 Jahre später fühle ich immer stärker, dass Rake-task ist der Weg zu gehen. schauen Sie unten meine Antwort: stackoverflow.com/a/31738018/726239
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stimme David hier. Verwenden Sie eine migration für diese. Ich bin mir nicht sicher, was Sie tun wollen, aber läuft es aus dem inneren Ihrer Umgebung ist viel, viel effizienter, dann laden die app-Umgebung manuell. Und seit deinem ersten post deutet Sie nur, wenn Sie dieses einmal tun, eine migration ist der Weg zu gehen:
rails g migration MigrateData
.. generiert:
Natürlich, Sie immer möchten, führen Sie diese zuerst lokal, mit einigen Testdaten.
Mithilfe einer migration klingt wie der richtige Weg zu gehen, wenn ich das Verständnis Ihrer Verwendung.
Jedoch, wenn Sie wirklich wollen, schreiben Sie ein standalone-Skript braucht Zugriff auf Ihre Rails-Anwendung der Modelle können Sie
require
dieenvironment.rb
Datei aus in Ihrem eigenständigen Skript.Beispiel:
config/environment.rb
- Datei.Stimme mit allen, die für diesen speziellen Fall, es klingt wie migration werden Weg zu gehen, jedoch tun dies regelmäßig, oder Sie schreiben eine andere Aufgabe/Skript, interagiert Schienen die app-Umgebung Schienen erzeugen einen rake-task für Sie! Diese wird zusammen mit der rails-app, und kann ausgeführt werden, wieder und wieder 🙂
Einfachste Weg, um erzeugen ein rake-task, die im zusammenspiel mit rails app/models zu machen Schienen generieren Rake-Aufgaben für Sie!! 🙂
Hier ist ein Beispiel
laufen
rails g task my_namespace my_task
Dies erzeugt eine Datei namens
lib/tasks/my_namespace.rake
die aussieht wie:Führen Sie diese Aufgabe mit
rake my_namespace:my_task
Sehen Sie Ihre ruby-code-Aufgabe, die Interaktion mit Schienen modal laufen!
Seeding Daten:
Hinzufügen von Daten bei Migrationen
Arbeiten mit Rechen Aufgaben
Ich lieber mit Migrationen für das hinzufügen einiger Daten, die in Ihrem Fall.
Wenn es eine einmalige Sache ist, benutzen Sie eine migration.
Wenn dies ist etwas, das getan werden muss, mehrfach, verwenden Sie einen rake-task.