左手人差し指が腱鞘炎で、キーボードカタカタハードモードになっている。つらい。
SteepのLSPでrequire 'uri'
がなくてURI
定数を参照できなくてエラーになっていたので直した。
$ docker run -it --rm rubylang/all-ruby env ALL_RUBY_SINCE=ruby-2.0.0 ./all-ruby -rrubygems -e 'p URI' ruby-2.0.0-p0 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ... ruby-2.2.9 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ruby-2.2.10 URI ruby-2.3.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ... ruby-2.3.6 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ruby-2.3.7 URI ruby-2.3.8 URI ruby-2.4.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ... ruby-2.4.3 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ruby-2.4.4 URI ... ruby-2.4.10 URI ruby-2.5.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ... ruby-2.5.0 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ruby-2.5.1 URI ... ruby-2.7.0-preview3 URI ruby-2.7.0-rc1 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1 ... ruby-2.7.1 -e:1:in `<main>': uninitialized constant URI (NameError) exit 1
Rubyのバージョンによって、rubygems
をrequireしただけだとURI
を参照できたりできなかったりするのに気がついた。なぞ。
rbs_rails
にActive Supportの型を取り込んだ。
とりあえず自動生成で作られたものだけを取り込んだので、多分何か壊れているとは思う。
これを取り込むのにSteepのextension周りがうまく動かず、複数のextension定義を1つにまとめるようにして倒した。
rbs_rails
にActive Modelの型も取り込んだ。これも自動生成。
Active Modelは型の行数も少なく、思ってたよりかなり楽に取り込めた。
また、型パラメータを持つクラスやモジュールを継承したりincludeしたりするのがrbs prototype
だけだとうまくいかないので、それをいい感じにするスクリプトを書いた。
Active Supportのときも似たようなことを手でやったのだけど、流石にめんどくなって自動化した。
Active Recordの型を取り込んでいる。
これは量が多いし、rbs_rails
のコア機能との兼ね合いもあるので少し大変そう。
ActiveSupport::Concern
をうまく扱えていないことに気がついた。
これをARより先に片付けたいところ。Active Support, Active Modelの型も生成し直しになるし、RBSの構文が変わるのを待ったほうが良いかもなあ