概要
irbのコードリーディングをする。
準備
- irbのソースコードをクローンする
git clone git@github.com:ruby/irb.git
- エントリポイントを細工する 元の状態だとRubyインストールディレクトリにあるirbを実行してしまうので、ローカルのirbを実行するようにする。
- 任意の箇所でデバッグする
コードリーディング
- irbコマンドの実行
- ruby/irb/blob/master/exe/irb#L9
- 実行しているファイル名を引数に、
IRB.start(__FILE__)を実行している
- 実行しているファイル名を引数に、
- 起動時のセットアップ処理
- irbの起動
- ruby/irb/blob/master/lib/irb.rb#L1001
- historyの読み込みをしている
- historyはコマンドの実行履歴。ファイル(~/.irb_history)に書き込まれている.
- historyの読み込みをしている
- 入力値の実行
- ruby/irb/blob/master/lib/irb.rb#L1041
- ruby/irb/blob/master/lib/irb/context.rb#L589
- 入力値によって処理を分岐をして実行している
- 式の場合
- コマンドの場合
- ruby/irb/blob/master/lib/irb/command/base.rb#L55
- コマンドが何かわからなかったが、利用者向けの機能ではなさそう
- ruby/irb/blob/master/lib/irb/command/base.rb#L55