Skip to main content

forwardable_delegation

📦 Delegating Methods with the Forwardable Module​

Instead of manually forwarding calls, Ruby's Forwardable module automates delegation, keeping your classes thin. Use def_delegators or def_delegator to specify which methods to forward to an internal object.

require 'forwardable'

class Wrapper
extend Forwardable
def initialize(real)
@real = real
end
def_delegators :@real, :perform, :status
end

class Worker
def perform; 'done'; end
def status; 'ok'; end
end

wrapper = Wrapper.new(Worker.new)
wrapper.perform #=> "done"
wrapper.status #=> "ok"