diff --git a/lib/sidekiq.rb b/lib/sidekiq.rb index 93e103dc..81a50977 100644 --- a/lib/sidekiq.rb +++ b/lib/sidekiq.rb @@ -149,7 +149,11 @@ module Sidekiq end def self.default_worker_options=(hash) - @default_worker_options = default_worker_options.merge(hash.stringify_keys) + # stringify + hash.keys.each do |key| + hash[key.to_s] = hash.delete(key) + end + @default_worker_options = default_worker_options.merge(hash) end def self.default_worker_options defined?(@default_worker_options) ? @default_worker_options : DEFAULT_WORKER_OPTIONS diff --git a/lib/sidekiq/core_ext.rb b/lib/sidekiq/core_ext.rb index e4f36013..d862843e 100644 --- a/lib/sidekiq/core_ext.rb +++ b/lib/sidekiq/core_ext.rb @@ -73,24 +73,3 @@ rescue LoadError end end - -begin - require 'active_support/core_ext/hash/keys' -rescue LoadError - class Hash - def stringify_keys - keys.each do |key| - self[key.to_s] = delete(key) - end - self - end if !{}.respond_to?(:stringify_keys) - - def symbolize_keys - keys.each do |key| - self[(key.to_sym rescue key) || key] = delete(key) - end - self - end if !{}.respond_to?(:symbolize_keys) - - end -end diff --git a/lib/sidekiq/redis_connection.rb b/lib/sidekiq/redis_connection.rb index b1762666..c668d825 100644 --- a/lib/sidekiq/redis_connection.rb +++ b/lib/sidekiq/redis_connection.rb @@ -8,7 +8,9 @@ module Sidekiq class << self def create(options={}) - options = options.symbolize_keys + options.keys.each do |key| + options[key.to_sym] = options.delete(key) + end options[:url] ||= determine_redis_provider diff --git a/lib/sidekiq/web/helpers.rb b/lib/sidekiq/web/helpers.rb index 2e0eba14..24811b1e 100644 --- a/lib/sidekiq/web/helpers.rb +++ b/lib/sidekiq/web/helpers.rb @@ -189,7 +189,11 @@ module Sidekiq # Merge options with current params, filter safe params, and stringify to query string def qparams(options) - options = options.stringify_keys + # stringify + options.keys.each do |key| + options[key.to_s] = options.delete(key) + end + params.merge(options).map do |key, value| SAFE_QPARAMS.include?(key) ? "#{key}=#{CGI.escape(value.to_s)}" : next end.compact.join("&") diff --git a/lib/sidekiq/worker.rb b/lib/sidekiq/worker.rb index d400c71d..bf4b3b80 100644 --- a/lib/sidekiq/worker.rb +++ b/lib/sidekiq/worker.rb @@ -118,7 +118,12 @@ module Sidekiq # In practice, any option is allowed. This is the main mechanism to configure the # options for a specific job. def sidekiq_options(opts={}) - self.sidekiq_options_hash = get_sidekiq_options.merge(opts.stringify_keys) + # stringify + opts.keys.each do |key| + opts[key.to_s] = opts.delete(key) + end + + self.sidekiq_options_hash = get_sidekiq_options.merge(opts) end def sidekiq_retry_in(&block) @@ -135,8 +140,12 @@ module Sidekiq def client_push(item) # :nodoc: pool = Thread.current[:sidekiq_via_pool] || get_sidekiq_options['pool'.freeze] || Sidekiq.redis_pool - hash = item.stringify_keys - Sidekiq::Client.new(pool).push(hash) + # stringify + item.keys.each do |key| + item[key.to_s] = item.delete(key) + end + + Sidekiq::Client.new(pool).push(item) end end