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