Project

edrive

0.0
No commit activity in last 3 years
No release in over 3 years
Generic Event Dispatcher. Provide simple event dispatcher mechanism for all of ruby products.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16
~> 10.0
~> 3.0

Runtime

~> 3.6
 Project Readme

edrive

Gem Version

Provide simple event dispatcher mechanism for all of ruby products.

Installation

Add this line to your application's Gemfile:

gem 'edrive'

And then execute:

$ bundle

Or install it yourself as:

$ gem install edrive

Usage

Edrive::Dispatcher

main class

lambda & dispatch

dispatcher = Edrive::Dispatcher.new
dispatcher.subscribe(:event, -> { puts 1 })
dispatcher.subscribe(:event, -> { puts 2 })
dispatcher.subscribe(:event, -> { puts 3 })
dispatcher.dispatch(:event)

1
2
3

lambda & dispatch with data

dispatcher = Edrive::Dispatcher.new
dispatcher.subscribe(:event, ->(data) { data + 1 })
dispatcher.subscribe(:event, ->(data) { data + 2 })
dispatcher.subscribe(:event, ->(data) { data + 3 })
dispatcher.subscribe(:event, ->(data) { puts data })
dispatcher.dispatch_with_data(:event, 100)

106

block

dispatcher = Edrive::Dispatcher.new
dispatcher.subscribe(:event) { puts 1 }
dispatcher.subscribe(:event) { puts 2 }
dispatcher.subscribe(:event) { puts 3 }
dispatcher.dispatch(:event)

1
2
3

block & dispatch with data

dispatcher = Edrive::Dispatcher.new
dispatcher.subscribe(:event) { |data| data + 1 }
dispatcher.subscribe(:event) { |data| data + 2 }
dispatcher.subscribe(:event) { |data| data + 3 }
dispatcher.dispatch_with_data(:event, 100)

106

clear target event

dispatcher.clear!(:event)

clear all event

dispatcher.clear_all!

Edrive::ProcessorDispatcher

Event dispatcher for processor class inherited Edrive::Dispatcher.

Use :before_process, :after_process events only in this class.

This class has dispatch_all method.

  def dispatch_all(use_result = true)
    dispatch(DEFINED_EVENT[0])
    if use_result
      result = dispatch_processor_process
      return dispatch_with_data(DEFINED_EVENT[1], result)
    end
    dispatch_processor_process
    dispatch(DEFINED_EVENT[1])
  end

Edrive::Handler

sample event handlers class.

require 'edrive'

dispatcher = Edrive::Dispatcher.new
dispatcher.subscribe(:before, Edrive::Handler.hash2json)
dispatcher.subscribe(:before, Edrive::Handler.json2hash)
puts dispatcher.dispatch_with_data(:before, hoge: 2, fuga: 3)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/MichinaoShimizu/edrive. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Edrive project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.