Module: SidekiqSimpleDelay
- Defined in:
- lib/sidekiq_simple_delay.rb,
lib/sidekiq_simple_delay/utils.rb,
lib/sidekiq_simple_delay/version.rb,
lib/sidekiq_simple_delay/delay_worker.rb,
lib/sidekiq_simple_delay/delay_methods.rb,
lib/sidekiq_simple_delay/generic_proxy.rb,
lib/sidekiq_simple_delay/delayed_mailer.rb,
lib/sidekiq_simple_delay/extensions/action_mailer.rb,
lib/sidekiq_simple_delay/extensions/active_record.rb
Overview
Sidekiq delay functionality with some restrictions
Defined Under Namespace
Modules: ActionMailer, ActiveRecord, DelayMethods Classes: Proxy, SimpleDelayedMailer, SimpleDelayedWorker, Utils
Constant Summary collapse
- VERSION =
'0.2.1'
Class Method Summary collapse
-
.enable_delay! ⇒ Object
Adds simple_delay class methods to all classes.
-
.enable_delay_active_record!(klass = nil) ⇒ Object
Adds simple_delay functionality to ActiveRecord objects.
-
.enable_delay_application_mailer!(klass = nil) ⇒ Object
Adds simple_delay functionality to ActionMailer objects.
-
.enable_delay_class!(klass) ⇒ Object
Adds simple_delay class methods to a class.
-
.enable_delay_instance!(klass) ⇒ Object
Adds simple_delay instance methods to class.
Class Method Details
.enable_delay! ⇒ Object
Adds simple_delay class methods to all classes
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/sidekiq_simple_delay.rb', line 10 def enable_delay! enable_delay_instance!(Module) return unless defined?(::ActiveSupport) ActiveSupport.on_load(:active_record) do SidekiqSimpleDelay.enable_delay_active_record! end ActiveSupport.on_load(:action_mailer) do SidekiqSimpleDelay.enable_delay_application_mailer! end end |
.enable_delay_active_record!(klass = nil) ⇒ Object
Adds simple_delay functionality to ActiveRecord objects. Attempts to add to ApplicationRecord first, the falls back to adding to ActiveRecord::Base.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/sidekiq_simple_delay.rb', line 50 def enable_delay_active_record!(klass = nil) klass = if !klass.nil? klass elsif defined?(::ApplicationRecord) ::ApplicationRecord elsif defined?(::ActiveRecord::Base) ::ActiveRecord::Base end raise ArgumentError, 'klass must be supplied' if klass.nil? raise ArgumentError, 'klass must be a class' unless klass.class.is_a?(Class) raise ArgumentError, 'klass must inherit from ActiveRecord::Base' unless klass.ancestors.any? { |c| c.name == 'ActiveRecord::Base' } ar_file = 'sidekiq_simple_delay/extensions/active_record' require ar_file unless defined? SidekiqSimpleDelay::ActiveRecord return if klass.included_modules.include?(SidekiqSimpleDelay::ActiveRecord) klass.__send__(:include, SidekiqSimpleDelay::ActiveRecord) end |
.enable_delay_application_mailer!(klass = nil) ⇒ Object
Adds simple_delay functionality to ActionMailer objects. Attempts to add to ApplicationMailer first, the falls back to adding to ActionMailer::Base.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/sidekiq_simple_delay.rb', line 76 def enable_delay_application_mailer!(klass = nil) klass = if !klass.nil? klass elsif defined?(::ApplicationMailer) ::ApplicationMailer elsif defined?(::ActionMailer::Base) ::ActionMailer::Base end raise ArgumentError, 'klass must be supplied' if klass.nil? raise ArgumentError, 'klass must be a class' unless klass.class.is_a?(Class) raise ArgumentError, 'klass must inherit from ActionMailer::Base' unless klass.ancestors.any? { |c| c.name == 'ActionMailer::Base' } ar_file = 'sidekiq_simple_delay/extensions/action_mailer' require ar_file unless defined? SidekiqSimpleDelay::ActionMailer return if klass.included_modules.include?(SidekiqSimpleDelay::ActionMailer) klass.__send__(:include, SidekiqSimpleDelay::ActionMailer) end |
.enable_delay_class!(klass) ⇒ Object
Adds simple_delay class methods to a class
27 28 29 30 31 32 33 |
# File 'lib/sidekiq_simple_delay.rb', line 27 def enable_delay_class!(klass) raise ArgumentError, 'klass must be a Class' unless klass.class.is_a?(Class) return if klass.singleton_class.included_modules.include?(SidekiqSimpleDelay::DelayMethods) klass.__send__(:extend, SidekiqSimpleDelay::DelayMethods) end |
.enable_delay_instance!(klass) ⇒ Object
Adds simple_delay instance methods to class
38 39 40 41 42 43 44 |
# File 'lib/sidekiq_simple_delay.rb', line 38 def enable_delay_instance!(klass) raise ArgumentError, 'klass must be a Class' unless klass.class.is_a?(Class) return if klass.included_modules.include?(SidekiqSimpleDelay::DelayMethods) klass.__send__(:include, SidekiqSimpleDelay::DelayMethods) end |