- use ThreadSafe::Cache instead of Hash for storing handlers (improved concurrency)
- Bugfix: recover from (concurrent) handler removal adhearsion/punchblock#234
- Bugfix: Clearing all handlers now works
- Bugfix: Fix release pipeline
- Bugfix: Ensure temp handlers are executed only once.
- Improved documentation on how chained handlers execute via
throw :pass
,throw :halt
, and not explicitly throwing.
- Feature: Add a broadcast mode to handler triggering, which ignores what happens in handlers (return value and exceptions) and unconditionally continues the handler chain.
- Bugfix: Correct API preservation from previous release
- Bugfix: Preserve the old 'API' by which handlers were called
- Bugfix: Report handler execution correctly in edge cases
- Feature: Return true/false from #trigger_handler depending on wether a handler was called or not
- Removed dependency on uuid gem in favour of the Ruby built-in
SecureRandom.uuid
- Feature: It is now possible to register a handler to process all events
- Bugfix: Temporary handlers were being removed after the first event even if their guards didn't match
- Bugfix: Fix for a syntax error on Ruby 1.8
- Feature: Allow registering temporary (single execution) handlers which are removed after they are triggered
- Feature: Registering a handler returns an ID by which it may be unregistered
- Feature: Allow guarding on the value of method calls with arguments, by using an array as a hash key
- Bump to 1.0.0 because the API is stable
- Feature: Allow guarding with a module to test if an object has a mixin
- Bugfix: Fix an exception when triggering an event when no handlers are set
- Allow setting a priority with which to execute a handler, where higher priority handlers are exectuted first
- Allow classes to be passed as guards, matching against an event via #is_a?
- Bugfix: The mixin now does not hijack the target's initializer which was causing issues with inheritance
- Feature: Some code that works!