NAME
wrap
SYNOPSIS
non-sucking :before and :after filters for any ruby class
DESCRIPTION
yes yes, active_support does this. but crapily. with active_support you'll
need to do this
class Record
include ActiveSupport::Callbacks
define_callbacks :save
def save
run_callbacks :save do
puts "- save"
end
end
end
but hey, if a subclass forgets to call 'super' or doesn't manually run
'run_callbacks' the codez are *screwed*. that sux. why not this?
class Record
include Wrap
wrap :save
end
yes, it's that simple. you can now do
class SubRecord < Record
before :save do
special_sauce
end
def save
no_special_sauce
end
end
did you get that? the :before and :after hooks will be called no matter
what the subclass does. the method will be wrapped, period. no special
work required. of course, if the sublcass messes with 'method_added' their
will be hell to pay. that's the price for simplicity.
the callbacks are very close, but not identical to active_supports. you can
return 'false' to halt the chain, but you can also simply call 'halt!'.
another neat trick is that :before callbacks will be called with the
arguments to the wrapped method itself iff possible and :after callbacks
will be called with the result of the wrapped method, iff possible.
the test suite reads pretty damn clean. have a go.
Project
wrap
non-sucking :before and :after filters for any ruby class
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
Pull Requests
Development
Primary Language
Ruby
Licenses
same as ruby's
Dependencies
Runtime
>= 4.7.1
Project Readme