DEV Community 👩‍💻👨‍💻

DEV Community 👩‍💻👨‍💻 is a community of 963,673 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Create account Log in
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)

You guessed it

The most popular item in our shop is the stickers. Grab a pack today (with free shipping)!