1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Merge pull request #1778 from hundredwatt/optional_extension_loading

Optional extension loading
This commit is contained in:
Mike Perham 2014-06-28 15:34:27 -07:00
commit 8736c512a0
3 changed files with 22 additions and 1 deletions

View file

@ -36,4 +36,4 @@ module Sidekiq
end
end
Module.__send__(:include, Sidekiq::Extensions::Klass)
Module.__send__(:include, Sidekiq::Extensions::Klass) unless defined?(::Rails)

View file

@ -1,5 +1,7 @@
module Sidekiq
def self.hook_rails!
return if defined?(@delay_removed)
ActiveSupport.on_load(:active_record) do
include Sidekiq::Extensions::ActiveRecord
end
@ -7,12 +9,16 @@ module Sidekiq
ActiveSupport.on_load(:action_mailer) do
extend Sidekiq::Extensions::ActionMailer
end
Module.__send__(:include, Sidekiq::Extensions::Klass)
end
# Removes the generic aliases which MAY clash with names of already
# created methods by other applications. The methods `sidekiq_delay`,
# `sidekiq_delay_for` and `sidekiq_delay_until` can be used instead.
def self.remove_delay!
@delay_removed = true
[Extensions::ActiveRecord,
Extensions::ActionMailer,
Extensions::Klass].each do |mod|

View file

@ -100,6 +100,21 @@ class TestExtensions < Sidekiq::Test
def queue_size(name='default')
Sidekiq::Queue.new(name).size
end
it 'allows removing of the #delay methods' do
Sidekiq.remove_delay!
assert_equal 0, queue_size
assert_raises NoMethodError do
SomeModule.delay.doit(Date.today)
end
Sidekiq.instance_eval { remove_instance_variable :@delay_removed }
# Reload modified modules
load 'sidekiq/extensions/action_mailer.rb'
load 'sidekiq/extensions/active_record.rb'
load 'sidekiq/extensions/generic_proxy.rb'
load 'sidekiq/extensions/class_methods.rb'
end
end
end