2022年12月12日月曜日

robe で Date などのビルトインクラスのソースを確認する方法

robe で Date などのビルトインクラスのソースを確認する方法

概要

Date や String のメソッドに関しては pry-doc のリファレンスを参照することができますがクラスそのものにジャンプすることはできません (Can’t find the location になる)

一応たどる方法があるので紹介します

環境

  • macOS 11.7
  • emacs 28.1

方法: pry で show-source を実行し CRuby のソースコードを入手する

emacs で pry バッファに移動して以下のように show-source Date を実行しましょう

[11] pry(main)> show-source Date
Identifier not found - do you want to install CRuby sources to attempt to resolve the identifier there?
This allows the lookup of C internals Y/N Y
Downloading and setting up Ruby 3_1_2 source...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 14.3M    0 14.3M    0     0  2518k      0 --:--:--  0:00:05 --:--:-- 2429k
Generating tagfile!
...Finished!

これで再度 Date からジャンプすればソースコードを参照できるようになります

最後に

ちなみに Date を継承している DateTime はこの方法でも参照できないようです
おそらく pry-doc で show-source DateTime すると親クラスの Date のソースが確認できるのでそもそも無理なのかもしれません

そもそもビルトイン関係の実装まで確認したいケースは少ないと思いますが一応これで確認できます
面倒な場合は emacs からでなく直接 CRuby のソースをダウンロードして見るのでもいいと思います

0 件のコメント:

コメントを投稿