From bd0796e156ad07597b2fed4e2564d48d29b0a613 Mon Sep 17 00:00:00 2001 From: Ahmad Elassuty Date: Wed, 3 Feb 2021 23:21:32 +0100 Subject: [PATCH] feat: drop active_support dependency (#13) --- Gemfile.lock | 14 -------- event_router.gemspec | 3 -- lib/event_router.rb | 8 +++-- lib/event_router/delivery_adapters/sidekiq.rb | 1 - lib/event_router/event.rb | 33 ++++++++++++++----- 5 files changed, 29 insertions(+), 30 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 806aad0..6e1aa3d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,27 +2,16 @@ PATH remote: . specs: event_router (0.3.0) - activesupport GEM remote: https://rubygems.org/ specs: - activesupport (6.1.1) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) ast (2.4.1) byebug (11.1.3) coderay (1.1.3) - concurrent-ruby (1.1.8) connection_pool (2.2.3) diff-lcs (1.3) - i18n (1.8.7) - concurrent-ruby (~> 1.0) method_source (1.0.0) - minitest (5.14.3) oj (3.10.14) parallel (1.19.2) parser (2.7.1.4) @@ -67,10 +56,7 @@ GEM connection_pool (>= 2.2.2) rack (~> 2.0) redis (>= 4.2.0) - tzinfo (2.0.4) - concurrent-ruby (~> 1.0) unicode-display_width (1.7.0) - zeitwerk (2.4.2) PLATFORMS ruby diff --git a/event_router.gemspec b/event_router.gemspec index b2a8aba..8868865 100644 --- a/event_router.gemspec +++ b/event_router.gemspec @@ -25,9 +25,6 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.require_paths = ['lib'] - # Dependencies - spec.add_dependency 'activesupport' - # Development dependencies spec.add_development_dependency 'oj' spec.add_development_dependency 'pry' diff --git a/lib/event_router.rb b/lib/event_router.rb index 1130b47..da9a8eb 100644 --- a/lib/event_router.rb +++ b/lib/event_router.rb @@ -3,12 +3,14 @@ require 'event_router/version' require 'event_router/error' +require 'event_router/configuration' require 'event_router/event' -require 'event_router/delivery_adapters/base' + require 'event_router/serializers/base' -require 'event_router/publisher' require 'event_router/serializer' -require 'event_router/configuration' + +require 'event_router/delivery_adapters/base' +require 'event_router/publisher' module EventRouter module_function diff --git a/lib/event_router/delivery_adapters/sidekiq.rb b/lib/event_router/delivery_adapters/sidekiq.rb index 279076f..bfbf518 100644 --- a/lib/event_router/delivery_adapters/sidekiq.rb +++ b/lib/event_router/delivery_adapters/sidekiq.rb @@ -2,7 +2,6 @@ require 'sidekiq' -require 'event_router/serializer' require 'event_router/helpers/event' require_relative 'helpers/sidekiq' diff --git a/lib/event_router/event.rb b/lib/event_router/event.rb index 6a4e35f..835ad69 100644 --- a/lib/event_router/event.rb +++ b/lib/event_router/event.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true require 'securerandom' -require 'active_support/core_ext/class/attribute' -require 'active_support/core_ext/string/inflections' require_relative 'destination' @@ -11,9 +9,6 @@ class Event attr_reader :uid, :created_at, :payload attr_accessor :correlation_id - class_attribute :destinations, default: {}, instance_writer: false - class_attribute :options, instance_writer: false - def initialize(uid: SecureRandom.uuid, correlation_id: SecureRandom.uuid, created_at: Time.now, **payload) @uid = uid @correlation_id = correlation_id @@ -33,12 +28,28 @@ def to_hash alias to_h to_hash def name - self.class.name.demodulize.underscore + self.class.name.gsub(/([a-z])([A-Z])/, '\1_\2').gsub(/.*::/, '').downcase + end + + def destinations + self.class.destinations + end + + def options + self.class.options + end + + def options? + !options.nil? end class << self - def inherited(base) - base.destinations = destinations.dup + attr_reader :options + + def inherited(subclass) + subclass.instance_variable_set(:@options, @options.dup) + subclass.instance_variable_set(:@destinations, @destinations.dup) + super end @@ -46,8 +57,12 @@ def deliver_to(name, opts = {}) destinations[name] = EventRouter::Destination.new(name, **opts) end + def destinations + @destinations ||= {} + end + def event_options(opts) - self.options = opts + @options = opts end def publish(**attrs)