diary

I like Hatena Star with a text selection.

2020-06-19

左手人差し指が腱鞘炎で、キーボードカタカタハードモードになっている。つらい。


github.com

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を参照できたりできなかったりするのに気がついた。なぞ。


github.com

rbs_railsにActive Supportの型を取り込んだ。 とりあえず自動生成で作られたものだけを取り込んだので、多分何か壊れているとは思う。

これを取り込むのにSteepのextension周りがうまく動かず、複数のextension定義を1つにまとめるようにして倒した。

https://github.com/pocke/rbs_rails/blob/f8579aca315d6b48d179585f301a4fbf42a9a055/bin/merge-duplicate-decls.rb


github.com

rbs_railsにActive Modelの型も取り込んだ。これも自動生成。 Active Modelは型の行数も少なく、思ってたよりかなり楽に取り込めた。

また、型パラメータを持つクラスやモジュールを継承したりincludeしたりするのがrbs prototypeだけだとうまくいかないので、それをいい感じにするスクリプトを書いた。 Active Supportのときも似たようなことを手でやったのだけど、流石にめんどくなって自動化した。

https://github.com/pocke/rbs_rails/blob/f8579aca315d6b48d179585f301a4fbf42a9a055/bin/add-type-params.rb


github.com

Active Recordの型を取り込んでいる。

これは量が多いし、rbs_railsのコア機能との兼ね合いもあるので少し大変そう。


github.com

ActiveSupport::Concernをうまく扱えていないことに気がついた。 これをARより先に片付けたいところ。Active Support, Active Modelの型も生成し直しになるし、RBSの構文が変わるのを待ったほうが良いかもなあ