【一人 bugs.ruby Advent Calendar 2021】[Feature #6210] load should provide a way to specify the top-level module【10日目】

一人 bugs.ruby Advent Calendar 2021 10日目の記事になります。 load メソッドに Module を渡せるようにする事でそのモジュール内で load された定義が追加できるように提案する話です。

[Feature #6210] load should provide a way to specify the top-level module

load メソッドに Module を指定できるようにする提案です。
以下のように Module を渡すとその Module に対して load した Ruby のコードが展開されるようになります。

# test.rb
def hoge
  "hoge"
end

class Foo
  def foo
    "foo"
  end
end
module M
end

# M に対して test.rb の中身が定義される
load "./test.rb", M

p M::Foo
# => M::Foo

p M::Foo.new.foo
# => "foo"

class X
  include M
  public :hoge
end

p X.new.hoge
# => "hoge"

これは Ruby 3.1 から使えるようになる機能です。
これ、任意のモジュール/クラスに対して特定の Rubyスクリプトが展開できるようになるので面白いですよね。
なんかいろんな使い方ができそう。