55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/fairway/scripts.rb', line 55
def method_missing(method_name, *args)
loaded = false
if multi?(method_name)
redis.with_each do |conn|
conn.evalsha(script_sha(method_name), [namespace], args)
end
elsif first?(method_name)
first_pool do |conn|
conn.evalsha(script_sha(method_name), [namespace], args)
end
else
redis.with do |conn|
conn.evalsha(script_sha(method_name), [namespace], args)
end
end
rescue Redis::CommandError => ex
if ex.message.include?("NOSCRIPT") && !loaded
redis.with_each do |conn|
conn.script(:load, script_source(method_name))
end
loaded = true
retry
else
raise
end
end
|