delegate
メソッドの委譲 (delegation) を行うためのライブラリ。
参考:
Delegator
サブクラスにメソッド委譲の仕組みを提供する抽象クラス。メソッド委譲を行う場合は本クラスを継承し、Delegator#__getobj__
を再定義する必要がある。具体的な使用例については SimpleDelegator
を参照のこと。
参考:
class SimpleDelegator (Ruby 2.6.0)
Forwardable
参考:
module Forwardable (Ruby 2.5.0)
instance method Forwardable#delegate (Ruby 2.6.0)
instance method Forwardable#def_delegator (Ruby 2.6.0)
instance method Forwardable#def_delegators (Ruby 2.6.0)
SingleForwardable
参考:
module SingleForwardable (Ruby 2.6.0)
instance method SingleForwardable#def_delegator (Ruby 2.6.0)
instance method SingleForwardable#def_delegators (Ruby 2.6.0)
delegate / def_delegator / def_delegators の使い方
class LineItem extend Forwardable attr_reader :id # Use alias name product_id to avoid overwriting LineItem#id def_delegator :@product, :id, :product_id def_delegators :@product, :sku, :name, :description, :price end
参考:
Delegation patterns in Ruby | O’Reilly Radar
instance method Forwardable#delegate (Ruby 2.6.0)
instance method Forwardable#def_delegator (Ruby 2.6.0)
instance method Forwardable#def_delegators (Ruby 2.6.0)
instance_delegate – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub
def_instance_delegator – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub
def_instance_delegators – ruby/forwardable.rb at v2_6_2 · ruby/ruby – GitHub
定数を delegate する
参考:
Can I use Forwardable to delegate a constant in Ruby? – Stack Overflow
Module#delegate
Active Support (Ruby on Rails) による拡張。
参考:
delegate – Module | Ruby on Rails API [Official]
rails/delegation.rb at v5.2.2.1 · rails/rails – GitHub
SimpleDelegator 使用時に自動読み込みさせる (Ruby on Rails)
参考:
SimpleDelegator autoloading issues with Rails | The Pug Automatic