diff --git a/lib/sidekiq.rb b/lib/sidekiq.rb index 8f805627..93e103dc 100644 --- a/lib/sidekiq.rb +++ b/lib/sidekiq.rb @@ -12,7 +12,7 @@ require 'sidekiq/delay' require 'json' module Sidekiq - NAME = 'Sidekiq' + NAME = 'Sidekiq'.freeze LICENSE = 'See LICENSE and the LGPL-3.0 for licensing details.' DEFAULTS = { diff --git a/lib/sidekiq/client.rb b/lib/sidekiq/client.rb index 76c5b424..1eef6525 100644 --- a/lib/sidekiq/client.rb +++ b/lib/sidekiq/client.rb @@ -63,11 +63,11 @@ module Sidekiq # def push(item) normed = normalize_item(item) - payload = process_single(item['class'], normed) + payload = process_single(item['class'.freeze], normed) if payload raw_push([payload]) - payload['jid'] + payload['jid'.freeze] end end @@ -84,19 +84,19 @@ module Sidekiq # Returns an array of the of pushed jobs' jids. The number of jobs pushed can be less # than the number given if the middleware stopped processing for one or more jobs. def push_bulk(items) - arg = items['args'].first + arg = items['args'.freeze].first return [] unless arg # no jobs to push raise ArgumentError, "Bulk arguments must be an Array of Arrays: [[1], [2]]" if !arg.is_a?(Array) normed = normalize_item(items) - payloads = items['args'].map do |args| - copy = normed.merge('args' => args, 'jid' => SecureRandom.hex(12), 'enqueued_at' => Time.now.to_f) - result = process_single(items['class'], copy) + payloads = items['args'.freeze].map do |args| + copy = normed.merge('args'.freeze => args, 'jid'.freeze => SecureRandom.hex(12), 'enqueued_at'.freeze => Time.now.to_f) + result = process_single(items['class'.freeze], copy) result ? result : nil end.compact raw_push(payloads) if !payloads.empty? - payloads.collect { |payload| payload['jid'] } + payloads.collect { |payload| payload['jid'.freeze] } end # Allows sharding of jobs across any number of Redis instances. All jobs @@ -140,14 +140,14 @@ module Sidekiq # Messages are enqueued to the 'default' queue. # def enqueue(klass, *args) - klass.client_push('class' => klass, 'args' => args) + klass.client_push('class'.freeze => klass, 'args'.freeze => args) end # Example usage: # Sidekiq::Client.enqueue_to(:queue_name, MyWorker, 'foo', 1, :bat => 'bar') # def enqueue_to(queue, klass, *args) - klass.client_push('queue' => queue, 'class' => klass, 'args' => args) + klass.client_push('queue'.freeze => queue, 'class'.freeze => klass, 'args'.freeze => args) end # Example usage: @@ -158,7 +158,7 @@ module Sidekiq now = Time.now.to_f ts = (int < 1_000_000_000 ? now + int : int) - item = { 'class' => klass, 'args' => args, 'at' => ts, 'queue' => queue } + item = { 'class'.freeze => klass, 'args'.freeze => args, 'at'.freeze => ts, 'queue'.freeze => queue } item.delete('at'.freeze) if ts <= now klass.client_push(item) @@ -184,13 +184,13 @@ module Sidekiq end def atomic_push(conn, payloads) - if payloads.first['at'] + if payloads.first['at'.freeze] conn.zadd('schedule'.freeze, payloads.map do |hash| at = hash.delete('at'.freeze).to_s [at, Sidekiq.dump_json(hash)] end) else - q = payloads.first['queue'] + q = payloads.first['queue'.freeze] now = Time.now.to_f to_push = payloads.map do |entry| entry['enqueued_at'.freeze] = now @@ -202,7 +202,7 @@ module Sidekiq end def process_single(worker_class, item) - queue = item['queue'] + queue = item['queue'.freeze] middleware.invoke(worker_class, item, queue, @redis_pool) do item diff --git a/lib/sidekiq/redis_connection.rb b/lib/sidekiq/redis_connection.rb index 639d773a..b1762666 100644 --- a/lib/sidekiq/redis_connection.rb +++ b/lib/sidekiq/redis_connection.rb @@ -67,7 +67,7 @@ module Sidekiq opts.delete(:network_timeout) end - opts[:driver] ||= 'ruby' + opts[:driver] ||= 'ruby'.freeze # Issue #3303, redis-rb will silently retry an operation. # This can lead to duplicate jobs if Sidekiq::Client's LPUSH diff --git a/lib/sidekiq/worker.rb b/lib/sidekiq/worker.rb index 1a094fff..d400c71d 100644 --- a/lib/sidekiq/worker.rb +++ b/lib/sidekiq/worker.rb @@ -48,7 +48,7 @@ module Sidekiq end def perform_async(*args) - @opts['class'].client_push(@opts.merge!('args' => args)) + @opts['class'.freeze].client_push(@opts.merge!('args'.freeze => args)) end # +interval+ must be a timestamp, numeric or something that acts @@ -58,10 +58,10 @@ module Sidekiq now = Time.now.to_f ts = (int < 1_000_000_000 ? now + int : int) - @opts.merge! 'args' => args, 'at' => ts + @opts.merge! 'args'.freeze => args, 'at'.freeze => ts # Optimization to enqueue something now that is scheduled to go out now or in the past @opts.delete('at'.freeze) if ts <= now - @opts['class'].client_push(@opts) + @opts['class'.freeze].client_push(@opts) end alias_method :perform_at, :perform_in end @@ -81,11 +81,11 @@ module Sidekiq end def set(options) - Setter.new(options.merge!('class' => self)) + Setter.new(options.merge!('class'.freeze => self)) end def perform_async(*args) - client_push('class' => self, 'args' => args) + client_push('class'.freeze => self, 'args'.freeze => args) end # +interval+ must be a timestamp, numeric or something that acts @@ -95,7 +95,7 @@ module Sidekiq now = Time.now.to_f ts = (int < 1_000_000_000 ? now + int : int) - item = { 'class' => self, 'args' => args, 'at' => ts } + item = { 'class'.freeze => self, 'args'.freeze => args, 'at'.freeze => ts } # Optimization to enqueue something now that is scheduled to go out now or in the past item.delete('at'.freeze) if ts <= now @@ -134,7 +134,7 @@ module Sidekiq end def client_push(item) # :nodoc: - pool = Thread.current[:sidekiq_via_pool] || get_sidekiq_options['pool'] || Sidekiq.redis_pool + pool = Thread.current[:sidekiq_via_pool] || get_sidekiq_options['pool'.freeze] || Sidekiq.redis_pool hash = item.stringify_keys Sidekiq::Client.new(pool).push(hash) end