diary

I like Hatena Star with a text selection.

2020-02-20

github.com

久々のruby-signature。--no-stdlibオプションが効いていなかったので直した。


github.com

ruby-signatureのSyntax Errorをチェックするコマンドが欲しかったので足した。

サブコマンドの名前はなにがよいのかね。アイディアなし…


github.com

private def foo
end

上のようなメソッド定義を書いていた時にrbs prototype rbコマンドがこれを無視していたのを直した。 弊社ではこのスタイルでprivateメソッドを定義していてこれは最高なので、社とは関係のないプロダクトでもだいたいこのスタイルで書いている。


github.com

Rails向けにrbsファイルを生成するやつを作っている。 今できるのは次のコードの生成。

  • path helperの生成
  • Active Recordまわり
    • カラムに対応するメソッドの定義
    • has_many, belongs_to, has_oneに対応するメソッドの定義
    • enumで定義されるメソッド、scopeの定義
    • scopeで定義されるscopeの定義
      • これはscopeが定義されていたらそれは自身のクラスのAR::Relationを返すものと雑に判定している

あとなんか生成しておくとうれしいやつあるかな。


https://github.com/pocke/rbs_rails/blob/596ad0a1de9daedcbe173761164fc6f11727e038/lib/rbs_rails/active_record.rb#L144-L148

静的解析をしていて、リテラルを表すASTをたどるコードを書くよりも、そのリテラルを表すRubyオブジェクトを扱った方がはるかに楽。 なので、ASTにリテラルしか含まれていないことを確認してコードをevalするという雑なコードを書いた。これは便利。