Ich bin ein erfahrener Programmierer Ruby lernen (und es sehr zu mögen). Ich arbeite an der Einrichtung einer Datenbank mit SQLite3. Um Ruby besser zu lernen, suche ich nach SQLite3. Was ich nicht verstehe ist, wo ist der Code für #new für die Database und Statement-Klassen. Eigentlich erwarte ich keine #new-Methode, sondern eine #initialize-Methode.Wo sind die Initialize-Methoden für SQLite3 :: Database und SQLite3 :: Statement
SQLite3::Database.new(file, options = {})
SQLite3::Statement.new(db, sql)
Die obigen beiden Aussagen stammen aus der Dokumentation. Aber in meinem Code, wenn ich versuche in diesen
$db = SQLite3::Database.new"MyDBfile"
zu verfolgen es nur ein paar Schritte über.
Dann später, wenn ich versuche in
#$db.execute
nachzuzeichnen ich in die #execute Methode in der Database.rb-Datei erhalten, aber dann ruft es die #prepare Methode, wo ich versuche, in
zu Schrittstmt = SQLite3::Statement.new(self, sql)
aber wieder kein Glück. Es geht nur darüber hinweg.
Ich habe den Quellcode, Suchen usw. durchforstet, aber ich kann die Initialisierungsmethoden nicht finden, die aufgerufen werden. Wo sind sie ?
Vielen Dank für die Berücksichtigung dieser Frage.
Vielen Dank dafür. Aber es wirft neue Fragen auf. Erstens, wie löst Ruby ein "# xxx.new" auf? Sucht es zum Beispiel zuerst nach einer #initialize-Methode in einer Ruby-Datei, und wenn dies fehlschlägt, sucht es nach dem "C" -Code? Zweitens, wie ist der C-Code verknüpft? Ist es eine Obj-Datei oder Bibliothek im Edelsteinordner für SQLite3? – Will
ps. (Ich bin neu bei stackOverflow) - Ist mein obiger Kommentar angemessen? Oder sollte es ein Chat oder gar eine separate Frage sein? Vielen Dank. (Arbeiten an meinen Punkten!) – Will
@WilliamSmith: Wenn Sie auf den Boden der C-Dateien schauen, werden Sie die 'rb_define_method' Aufrufe sehen, die Dinge zusammenkleben. Die C-Dateien werden in die Bibliothek kompiliert und bei Bedarf dynamisch geladen. Sie sollten in der Lage sein, ein C-Erweiterung-Tutorial mit ein wenig Googeln zu finden. Die Kommentare sind in Ordnung, die meisten von uns hier sind freundlich (oder zumindest so zu tun :). –