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
Pull Requests
Development
Primary Language
Ruby
Licenses
same as ruby's
Dependencies
Runtime
>= 4.7.1
Project Readme