【一人 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 のスクリプトが展開できるようになるので面白いですよね。
なんかいろんな使い方ができそう。