Sie teilen Methoden in einem Modul und Sie platzieren ein solches Modul in den Ordner lib
.
So etwas wie lib/fake_data.rb
module FakeData
def random_address
[Faker::Address.street_address, Faker::Address.city].join("\n")
end
module_function
end
und in Ihrer Rake Aufgabe enthält, erfordert nur das Modul, und FakeData.random_address
nennen.
Aber wenn es wie ein Seed ist, müssen Sie jedes Mal tun, wenn Sie Ihre Tests ausführen, sollten Sie in Betracht ziehen, dies zu Ihrem allgemeinen before all
hinzuzufügen.
z. meine spec_helper
sieht wie folgt aus:
und das Modul SetupSupport
in spec/support/setup_support.rb
definiert ist, und sieht wie folgt aus:
module SetupSupport
def load_db_seed
load(File.join(Rails.root, 'db', 'seeds.rb'))
end
end
Nicht sicher, ob Sie die Samen laden müssen, oder tun dies bereits, aber Dies ist der ideale Ort, um auch benötigte gefälschte Daten zu generieren.
Beachten Sie, dass meine Setup-Support-Klasse in spec/support
definiert ist, da der Code nur für meine Spezifikationen relevant ist, habe ich keine Rake-Aufgabe, die auch den gleichen Code benötigt.
Danke für Ihre Hilfe! In welches Verzeichnis würden Sie diese Klasse stellen? – Tintin81
Es liegt an dir. Ich würde es wahrscheinlich in das Controller-Verzeichnis einfügen. – BlackHatSamurai
Nein, nicht das Controller-Verzeichnis. Genau deshalb gibt es einen Ordner 'lib'. Der Ordner "app/controllers" sollte nur Controller enthalten. – nathanvda