Module: SidekiqUniqueJobs::Scripts

Extended by:
SingleForwardable
Includes:
Overrides
Defined in:
lib/sidekiq_unique_jobs/scripts.rb,
lib/sidekiq_unique_jobs/testing.rb

Defined Under Namespace

Modules: Overrides

Class Method Summary collapse

Methods included from Overrides

included

Class Method Details

.call(file_name, redis_pool, options = {}) ⇒ Object

rubocop:disable MethodLength



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/sidekiq_unique_jobs/scripts.rb', line 23

def call(file_name, redis_pool, options = {}) # rubocop:disable MethodLength
  connection(redis_pool) do |redis|
    if SCRIPT_SHAS[file_name].nil?
      SCRIPT_SHAS[file_name] = redis.script(:load, script_source(file_name))
    end
    redis.evalsha(SCRIPT_SHAS[file_name], options)
  end
rescue Redis::CommandError => ex
  if ex.message == 'NOSCRIPT No matching script. Please use EVAL.'
    SCRIPT_SHAS.delete(file_name)
    call(file_name, redis_pool, options)
    raise
  else
    raise ScriptError,
          "#{file_name}.lua\n\n#{ex.message}\n\n#{script_source(file_name)}" \
          "#{ex.backtrace.join("\n")}"
  end
end

.loggerObject



19
20
21
# File 'lib/sidekiq_unique_jobs/scripts.rb', line 19

def logger
  Sidekiq.logger
end

.script_path(file_name) ⇒ Object



46
47
48
# File 'lib/sidekiq_unique_jobs/scripts.rb', line 46

def script_path(file_name)
  LUA_PATHNAME.join("#{file_name}.lua")
end

.script_source(file_name) ⇒ Object



42
43
44
# File 'lib/sidekiq_unique_jobs/scripts.rb', line 42

def script_source(file_name)
  script_path(file_name).read
end