Like autotune for your objects.
class Autochain
attr_reader :subject
def initialize(subject)
@subject = subject
end
def method_missing(method_name, *args, &block)
if subject.respond_to?(method_name)
subject.send(method_name, *args, &block)
subject
else
super
end
end
def respond_if_missing?(method_name, include_private = false)
subject.respond_to?(method_name, include_private) || super
end
end
Autochain.new(badger)
.save
.recouperate
.release_into_wild
# Equivalent to
badger.save # => true
badger.recouperate # => :recouperating
badger.release_into_wild # => :released
badger