rubyでForwardableライブラリは以下のように使います
https://docs.ruby-lang.org/ja/latest/class/Forwardable.html
require 'Forwardable'
class Bar
def sample_method; p "エイリアスでも定義します"; end
def sample_method2; p "2"; end
def sample_method3; p "3"; end
end
class Foo
extend Forwardable
def initialize
@q ||= Bar.new
end
# 移譲するメソッドに別名を定義
# 移譲先のオブジェクト、正式な名前、エイリアス名
def_delegator :@q, :sample_method, :same_sample_method
# 複数メソッドをまとめて移譲
def_delegators :@q, :sample_method, :sample_method2, :sample_method3
end
Foo.new.same_sample_method # "エイリアスでも定義します"
Foo.new.sample_method # "エイリアスでも定義します"
Foo.new.sample_method2 # "2"
Foo.new.sample_method3 # "3"
こちらの記事でも学ばせて頂きました!
https://qiita.com/huydx/items/9335b4237051330523d3