regexp_parser gemにはeach_expression
というメソッドがあるのだけど、これを引数なしで呼び出した時にエラーになっていてしまったのを修正した。
こういうのは引数なしで呼び出した時にEnumerator
が返るようになっていると、ほかのEnumerator
のメソッドと連携しやすくて大変便利。
regexp_parserのPRではバグを見つけていて、それをRuboCopのCopにできそうだったからとりあえず雑にIssueを上げた。
これを踏んだのでIssueを読んでた。ちゃんと読んでないけど、Rubyの実装の詳細の話だからそこまで面倒見なくていいんじゃないか、という感じかなあ
会社のRailsアプリでSteepを試すために使っている、型定義を生成するRake taskを公開しておく。
steep:base
で、既存コードからrbs prototype rb
コマンドで型定義を吐いている。
ただ、これを単純に実行しただけだとクラスが重複するのでそれをいい感じに解消している。
多分、次のようなケースで重複していたような気がする(記憶が曖昧…)
# path/to/ns.rb class NS end # path/to/ns/c.rb class NS class C end end
path/to/ns/c.rb
の型定義としてNS
クラスの空の型定義も吐かれてしまうのだけど、当然path/to/ns.rb
もNS
クラスの型定義を吐くので死ぬ。みたいな問題だった気がする。
これはruby-signature側でなんとかしてほしい気がする。
↑の問題をruby-signatureのIssueにした。
てきとーに買ってきたみかんがわりと美味しかった。
Pathnameの型が足りなくて困っているので型付けしている。
いつのまにかassert_send_type
というアサーションが生えていた。 https://github.com/ruby/ruby-signature/pull/191 で生えたっぽい。
型付けはるりまとRDocを両方見ながらやっているのだけど、そうするとるりまの間違いがちょくちょく見つかるので直している。