DEV Community

hiko1129
hiko1129

Posted on • Originally published at note.hiko1129.com on

[Ruby][Sorbet] What to do when you can't write types in Ruby files (when meta-programming)

Translate ja to en

メタプログラミングしている(define_methodとか使っている)ときは.rb上では型を付与できない。

ex: hoge.rb

class Hoge
  define_method :hoge do
    puts 'hogehoge'
  end
end

Hoge.new.hoge
Enter fullscreen mode Exit fullscreen mode

この場合には、RBIファイルに型を書く対応をする(or 型生成するコードを書く

ex: hoge.rbi

# typed: strict

class Hoge
  sig { void }
  def hoge; end
end
Enter fullscreen mode Exit fullscreen mode

bin/tapioca gemsなどを実行して型が足りないときも同様にsorbet/rbi/shims以下に型を書く(必要な部分のみで問題ない。)

# typed: strict

class ActiveRecord::Base
  sig { void }
  def hoge; end # <- こんな感じで必要な差分のみ追記で問題ない
end
Enter fullscreen mode Exit fullscreen mode

Top comments (0)