私はRubyを習得している経験豊富なプログラマーです。 私はSQLite3を使ってデータベースを設定しようとしています。 Rubyをもっと学ぶために、私はSQLite3をトレースしています。 私が理解していないのは、データベースおよびステートメントクラスの#newのコードはどこにありますか? 実際には、#新しいメソッドではなく、#initializeメソッドを期待しています。SQLite3 :: DatabaseとSQLite3 :: Statementの初期化メソッドはどこにありますか
上記の2つの文は、ドキュメントに記載されています。 しかし、私はこの
$db = SQLite3::Database.new"MyDBfile"
に追跡しようとすると、私のコードでは、それはわずか手順。
その後、私は私がDatabase.rbファイル内#execute方法に入るん
#$db.execute
にトレースしてみてください、しかし、それは私が
にステップインしようとする#prepareメソッドを呼び出したときにstmt = SQLite3::Statement.new(self, sql)
しかし、もう一度運がありません。それはそれを乗り越えるだけです。
私はソースコードを調べたり、検索を完了しましたが、呼び出されている初期化メソッドを見つけることができません。彼らはどこにいる ?
この問題をご検討いただきありがとうございます。
ありがとうございました。しかし、それは新しい疑問を提起する。まず、Rubyはどのように '#xxx.new'を解決しますか?たとえば、まずRubyファイルで#initializeメソッドを検索し、失敗すると "C"コードを探しますか?次に、Cコードはどのようにリンクされていますか? SQLite3用のgemフォルダ内のobjファイルまたはライブラリですか? – Will
ps。 (私はstackOverflowに新しいです) - 私の上記のコメントは適切ですか?それともチャットですか、別の質問ですべきですか?ありがとう。 (私の要点を扱っています!) – Will
@WilliamSmith:Cファイルの一番下を見ると、物事を結びつける 'rb_define_method'呼び出しがあります。 Cファイルはライブラリにコンパイルされ、必要に応じて動的にロードされます。あなたは、少しのグーグルでC拡張チュートリアルを見つけることができるはずです。コメントは大丈夫です、私たちのほとんどはここにフレンドリーです(または少なくとも、ふりをする:)。 –