Verwenden von Fixture-Finder-Helfern in der Rails-Konsole

8

Ich finde häufig, dass ich den Test-Fixture-Finder (zB users(:david) ) von der Rails-Konsole aus benutzen möchte. Gibt es ein bestimmtes Rails-Modul, das ich an der Eingabeaufforderung der Konsole laden kann, oder ein Juwel, das ich installieren kann, um diese verfügbar zu machen?

Meine Fragen zum Google-Oracle haben nichts gebracht, deshalb halte ich nicht den Atem an, aber ich hoffe, dass jemand hier auf SO ein Geheimnis kennt und bereit ist, es zu teilen.

    
Jon Garvin 13.12.2011, 01:49
quelle

5 Antworten

7

Ich habe es selbst herausgefunden. Dies funktioniert sowohl mit IRB als auch mit Pry . Ich brauche nur die folgenden Zeilen zu meiner .irbrc hinzuzufügen (und / oder. pryrc) Datei.

%Vor%

Nehmen wir nun an, dass es eine test/fixtures/users.yml -Datei gibt, die ein Fixture namens diane: enthält, dann liefert users(:diane) von der Rails-Konsole diesen Benutzer erfolgreich zurück.

m_x Antwort auf die ursprüngliche Frage war hilfreich, um diesen Punkt zu erreichen.

    
Jon Garvin 06.05.2013, 20:57
quelle
2

Ich wünschte, ich könnte Jon Garvins ausgezeichnete Antwort hinzufügen. Dies ist genau wie seine Version, aber verwendet method_missing nicht (was im globalen Kontext ziemlich beängstigend ist und keine Tab-Vervollständigung zulässt). Außerdem wartet es, bis Sie load_fixtures von irb aufrufen, bevor Sie Ihre Fixtures laden.

Fügen Sie dies in Ihre .irbrc ein oder fügen Sie einfach von hier ein.

%Vor%

Beispielverwendung:

%Vor%     
bronson 06.08.2014 06:14
quelle
1

Interessante Frage.

Weiß nicht, ob das hilft, aber die eigentliche Logik zum Laden von Fixtures scheint in active_record / fixtures.rb - sehen Sie sich insbesondere ActiveRecord::TestFixtures::ClassMethods#fixtures an, das ist das Makro, das Sie normalerweise in einer TestCase Kindklasse aufrufen.

Die Logik scheint gut im Modul ActiveRecord::TestFixtures enthalten zu sein. Vielleicht könnten Sie also versuchen, eine eigene Klasse zu erstellen, die dieses Modul enthält und in der Konsole erfordert. (Es scheint, dass Sie diese Klasse vor dem Einbinden von Fixtures instanziieren müssen, da die vom Modul generierten Methoden Instanzmethoden sind)

    
m_x 14.02.2013 11:02
quelle
0

Wir verwenden das sehr gut mit FactoryGirl .

Wenn du factory_girl verwenden kannst, hat es einige wirklich nette Features zum Mischen von Eigenschaften und Fabrikvererbung. Mit Factory-Girl sind der Zugriff über Spezifikationen und der Zugriff über die Konsole sehr ähnlich.

%Vor%

Wenn Sie Bundler verwenden, können Sie eine Edelsteingruppe für Ihre Entwicklungs- und Testumgebungen erstellen, die Factory-Girl enthält. Dann müssen Sie das nicht tun benötigen Sie es, wenn Sie die Konsole in Entwicklung verwenden.

%Vor%     
Matt Dressel 15.02.2013 06:13
quelle
0

Die andere Antwort ist unvollständig. Sie müssen FactoryGirl mitteilen, dass die Definitionen geladen werden sollen:

%Vor%

Weitere Informationen finden Sie in den Dokumenten .

    
Ian Vaughan 25.11.2013 11:30
quelle