Wenn ich eine Klasse in Ruby und ein Gemfile tausend Zeilen lang habe, was ist der beste Weg, um die class => gem
Beziehung zu lösen?Wie trägst du eine Klasse zurück zu einer Bibliothek/einem Juwel, von der sie geladen wurde?
Antwort
ein Gemfile
zu haben, die 1000 Zeilen lange ist wahrscheinlich eine große Quelle von Schmerz sein wird, vor allem, wenn Bibliotheken Upgrade - das ist eine riesigen Liste der Abhängigkeiten !!
Es ist oft offensichtlich, welches Juwel die Quelle ist, nur durch die Namenskonventionen. Aber in Fällen, wenn nicht, können Sie es aufzuspüren mit Method#source_location
:
> puts method(:mystery_method).source_location
> puts MysteryClass.method(:initialize).source_location
Wenn Sie pry
verwenden, dann gibt es auch einen bequemen Befehl zum Anzeigen des Quellcodes einer Klasse/Methode (mit dem show-method
Befehl, oder $
kurz):
(pry) > $ mystery_method
(pry) > $ MysteryClass
erwähnens~~POS=TRUNC wert~~POS=HEADCOMP ist auch Method#super_method
- die nützlich sein können, wenn das Verhalten von komplexen Vererbungs Aufspüren/Mixins.
Danke, obwohl ich zugeben, dass ich 1000 für den dramatischen Effekt verwendet habe, um Punkt zu veranschaulichen – joslinm
- 1. Wie gehst du zurück zu einer bestimmten Zeile in Java?
- 2. Wie benennst du eine Dart-Klasse?
- 3. Apartment Rubin Juwel: Willst du eine Ausnahme fangen
- 4. Wie können Sie feststellen, wann eine Android-Aktivität geladen wurde?
- 5. Garnele Juwel nicht geladen Schienen
- 6. Wie gibst du ein sf :: RenderWindow zurück?
- 7. Wie warten, bis die Google Maps API geladen hat, bevor eine Google.maps.OverlayView abgeleitete Klasse geladen wurde
- 8. Klasse dynamisch mit Javascript ändern, nachdem der Wert geladen wurde
- 9. Wie gibst du den Teil "Periode" in eine Zeitreihe zurück?
- 10. Gibt es eine Möglichkeit, eine Funktion aufzurufen, nachdem eine Klasse in Python geladen wurde?
- 11. Immer wenn Juwel nicht Instanz der Klasse
- 12. Wie gehst du von einer abstrakten Projektbeschreibung zu tatsächlichem Code?
- 13. Wie zurück zu einem UIViewController, der bereits geladen ist?
- 14. Wie zeichnest du eine Zeichenkette zu einer Bitmap in Silverlight?
- 15. Kratzen Sie eine Klasse innerhalb einer Klasse
- 16. Wie bekomme ich einen Pfad eine Klasse geladen wird von
- 17. Wie dereferenziere ich einen Hash, der von einer Methode einer Klasse zurückgegeben wurde?
- 18. Wie kann ich zählen, wie oft eine Ansicht seit dem Start der Anwendung geladen wurde?
- 19. Hinzufügen eines Refresh-UIBarButtonItem zu einem UINavigationController, der von einer NIB geladen wurde
- 20. Zugreifen auf eine Klasse, die von einer Methode in einer separaten Klasse instanziiert wurde
- 21. Symfony2: Kann nicht geladen \ Elastica_Query_Text() der Klasse
- 22. Swift: So rufen Sie eine C-Funktion auf, die von einer Dylib geladen wurde
- 23. Wie zu überprüfen, Hintergrund (CSS) Bild wurde geladen?
- 24. Wie gibst du nur eine Gruppe in Pandas zurück?
- 25. Wie gibst du das Element zurück, das von enumerateObjectsUsingBlock gefunden wurde?
- 26. Wählen Sie automatisch eine Filteroption, nachdem meine Seite geladen wurde
- 27. Wie du eine Seite einer Heroku App
- 28. Java-Klasse von der Website mit newInstance geladen?
- 29. Wie übergeben Sie Werte von einer Klasse zu einer anderen Klasse mit WPF?
- 30. Wie kommst du von 'gf' in Vim zurück
Wenn die Klasse keine native Implementierung hat, ist "Klass.method (: initialize) .source_location" wahrscheinlich der beste Kandidat. – mudasobwa
Das ist eigentlich unmöglich. Ruby hat ein Konzept namens "offene Klassen", was bedeutet, dass eine Klasse stückweise in mehreren verschiedenen Dateien in mehreren verschiedenen Edelsteinen definiert werden kann. Mit anderen Worten, es gibt keine "Klassendefinition" (Singular) und es gibt keine Klasse → Gem-Beziehung. –