sidekiq-glass 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +214 -0
- data/README.md +50 -0
- data/Rakefile +18 -0
- data/lib/sidekiq_glass.rb +7 -0
- data/lib/sidekiq_glass/timeout.rb +21 -0
- data/lib/sidekiq_glass/version.rb +5 -0
- data/lib/sidekiq_glass/worker.rb +43 -0
- data/sidekiq-glass.gemspec +22 -0
- metadata +74 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 96f70026aa4ae013f1f265fab9d7c16300b9ecaf
|
|
4
|
+
data.tar.gz: b3620f7ee2035edc7b37147da00074161f968eee
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d4d33e313fc5b06a027c8a3a5243223809d1b23c722a3348b9166b5f3bfe1003f9b4ba98ebca3e571993bc05427c6e4188a599d5834a30e6db384ceb059068dc
|
|
7
|
+
data.tar.gz: a39226e4845b8cfe3e5b2e0c351d46c08ddaaeb11d41eb6867e457c83692cb761c349f4332e4f92453b8a733a462f9f47efce305763bf9548a503dfcbde0aa06
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
sidekiq_glass
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.2.2
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: git://github.com/polishgeeks/polishgeeks-dev-tools.git
|
|
3
|
+
revision: 6799827c21bb2e066a7f6be28f66d413ff60c69b
|
|
4
|
+
specs:
|
|
5
|
+
polishgeeks-dev-tools (1.0.0)
|
|
6
|
+
brakeman
|
|
7
|
+
faker
|
|
8
|
+
haml-lint
|
|
9
|
+
mongoid-rspec
|
|
10
|
+
pry
|
|
11
|
+
rspec
|
|
12
|
+
rubocop
|
|
13
|
+
rubycritic (= 1.2.1)
|
|
14
|
+
shoulda
|
|
15
|
+
simplecov
|
|
16
|
+
timecop
|
|
17
|
+
yard
|
|
18
|
+
|
|
19
|
+
PATH
|
|
20
|
+
remote: .
|
|
21
|
+
specs:
|
|
22
|
+
sidekiq-glass (0.1.0)
|
|
23
|
+
sidekiq (= 3.4.1)
|
|
24
|
+
|
|
25
|
+
GEM
|
|
26
|
+
remote: https://rubygems.org/
|
|
27
|
+
specs:
|
|
28
|
+
abstract_type (0.0.7)
|
|
29
|
+
activemodel (4.2.3)
|
|
30
|
+
activesupport (= 4.2.3)
|
|
31
|
+
builder (~> 3.1)
|
|
32
|
+
activesupport (4.2.3)
|
|
33
|
+
i18n (~> 0.7)
|
|
34
|
+
json (~> 1.7, >= 1.7.7)
|
|
35
|
+
minitest (~> 5.1)
|
|
36
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
37
|
+
tzinfo (~> 1.1)
|
|
38
|
+
adamantium (0.2.0)
|
|
39
|
+
ice_nine (~> 0.11.0)
|
|
40
|
+
memoizable (~> 0.4.0)
|
|
41
|
+
ast (2.1.0)
|
|
42
|
+
astrolabe (1.3.1)
|
|
43
|
+
parser (~> 2.2)
|
|
44
|
+
axiom-types (0.1.1)
|
|
45
|
+
descendants_tracker (~> 0.0.4)
|
|
46
|
+
ice_nine (~> 0.11.0)
|
|
47
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
48
|
+
brakeman (3.0.5)
|
|
49
|
+
erubis (~> 2.6)
|
|
50
|
+
fastercsv (~> 1.5)
|
|
51
|
+
haml (>= 3.0, < 5.0)
|
|
52
|
+
highline (~> 1.6.20)
|
|
53
|
+
multi_json (~> 1.2)
|
|
54
|
+
ruby2ruby (~> 2.1.1)
|
|
55
|
+
ruby_parser (~> 3.7.0)
|
|
56
|
+
sass (~> 3.0)
|
|
57
|
+
terminal-table (~> 1.4)
|
|
58
|
+
bson (3.2.1)
|
|
59
|
+
builder (3.2.2)
|
|
60
|
+
celluloid (0.16.1)
|
|
61
|
+
timers (~> 4.0.0)
|
|
62
|
+
coderay (1.1.0)
|
|
63
|
+
coercible (1.0.0)
|
|
64
|
+
descendants_tracker (~> 0.0.1)
|
|
65
|
+
concord (0.1.5)
|
|
66
|
+
adamantium (~> 0.2.0)
|
|
67
|
+
equalizer (~> 0.0.9)
|
|
68
|
+
connection_pool (2.2.0)
|
|
69
|
+
descendants_tracker (0.0.4)
|
|
70
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
71
|
+
diff-lcs (1.2.5)
|
|
72
|
+
docile (1.1.5)
|
|
73
|
+
equalizer (0.0.11)
|
|
74
|
+
erubis (2.7.0)
|
|
75
|
+
faker (1.4.3)
|
|
76
|
+
i18n (~> 0.5)
|
|
77
|
+
fastercsv (1.5.5)
|
|
78
|
+
flay (2.4.0)
|
|
79
|
+
ruby_parser (~> 3.0)
|
|
80
|
+
sexp_processor (~> 4.0)
|
|
81
|
+
flog (4.2.1)
|
|
82
|
+
ruby_parser (~> 3.1, > 3.1.0)
|
|
83
|
+
sexp_processor (~> 4.4)
|
|
84
|
+
haml (4.0.7)
|
|
85
|
+
tilt
|
|
86
|
+
haml-lint (0.13.0)
|
|
87
|
+
haml (~> 4.0)
|
|
88
|
+
rubocop (>= 0.25.0)
|
|
89
|
+
sysexits (~> 1.1)
|
|
90
|
+
highline (1.6.21)
|
|
91
|
+
hitimes (1.2.2)
|
|
92
|
+
i18n (0.7.0)
|
|
93
|
+
ice_nine (0.11.1)
|
|
94
|
+
json (1.8.3)
|
|
95
|
+
memoizable (0.4.2)
|
|
96
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
97
|
+
method_source (0.8.2)
|
|
98
|
+
minitest (5.8.0)
|
|
99
|
+
mongoid (4.0.2)
|
|
100
|
+
activemodel (~> 4.0)
|
|
101
|
+
moped (~> 2.0.0)
|
|
102
|
+
origin (~> 2.1)
|
|
103
|
+
tzinfo (>= 0.3.37)
|
|
104
|
+
mongoid-rspec (2.2.0)
|
|
105
|
+
mongoid (~> 4.0.0)
|
|
106
|
+
rake
|
|
107
|
+
rspec (~> 3.1)
|
|
108
|
+
moped (2.0.6)
|
|
109
|
+
bson (~> 3.0)
|
|
110
|
+
connection_pool (~> 2.0)
|
|
111
|
+
optionable (~> 0.2.0)
|
|
112
|
+
multi_json (1.11.2)
|
|
113
|
+
optionable (0.2.0)
|
|
114
|
+
origin (2.1.1)
|
|
115
|
+
parser (2.2.2.6)
|
|
116
|
+
ast (>= 1.1, < 3.0)
|
|
117
|
+
powerpack (0.1.1)
|
|
118
|
+
procto (0.0.2)
|
|
119
|
+
pry (0.10.1)
|
|
120
|
+
coderay (~> 1.1.0)
|
|
121
|
+
method_source (~> 0.8.1)
|
|
122
|
+
slop (~> 3.4)
|
|
123
|
+
rainbow (2.0.0)
|
|
124
|
+
rake (10.4.2)
|
|
125
|
+
redis (3.2.1)
|
|
126
|
+
redis-namespace (1.5.2)
|
|
127
|
+
redis (~> 3.0, >= 3.0.4)
|
|
128
|
+
reek (1.6.3)
|
|
129
|
+
parser (~> 2.2.0.pre.7)
|
|
130
|
+
rainbow (>= 1.99, < 3.0)
|
|
131
|
+
unparser (~> 0.2.2)
|
|
132
|
+
rspec (3.3.0)
|
|
133
|
+
rspec-core (~> 3.3.0)
|
|
134
|
+
rspec-expectations (~> 3.3.0)
|
|
135
|
+
rspec-mocks (~> 3.3.0)
|
|
136
|
+
rspec-core (3.3.2)
|
|
137
|
+
rspec-support (~> 3.3.0)
|
|
138
|
+
rspec-expectations (3.3.1)
|
|
139
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
140
|
+
rspec-support (~> 3.3.0)
|
|
141
|
+
rspec-mocks (3.3.2)
|
|
142
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
143
|
+
rspec-support (~> 3.3.0)
|
|
144
|
+
rspec-support (3.3.0)
|
|
145
|
+
rubocop (0.33.0)
|
|
146
|
+
astrolabe (~> 1.3)
|
|
147
|
+
parser (>= 2.2.2.5, < 3.0)
|
|
148
|
+
powerpack (~> 0.1)
|
|
149
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
150
|
+
ruby-progressbar (~> 1.4)
|
|
151
|
+
ruby-progressbar (1.7.5)
|
|
152
|
+
ruby2ruby (2.1.4)
|
|
153
|
+
ruby_parser (~> 3.1)
|
|
154
|
+
sexp_processor (~> 4.0)
|
|
155
|
+
ruby_parser (3.7.1)
|
|
156
|
+
sexp_processor (~> 4.1)
|
|
157
|
+
rubycritic (1.2.1)
|
|
158
|
+
flay (= 2.4.0)
|
|
159
|
+
flog (= 4.2.1)
|
|
160
|
+
parser (>= 2.2.0, < 3.0)
|
|
161
|
+
reek (= 1.6.3)
|
|
162
|
+
ruby2ruby (>= 2.1.1, < 3.0)
|
|
163
|
+
virtus (~> 1.0)
|
|
164
|
+
sass (3.4.16)
|
|
165
|
+
sexp_processor (4.6.0)
|
|
166
|
+
shoulda (3.5.0)
|
|
167
|
+
shoulda-context (~> 1.0, >= 1.0.1)
|
|
168
|
+
shoulda-matchers (>= 1.4.1, < 3.0)
|
|
169
|
+
shoulda-context (1.2.1)
|
|
170
|
+
shoulda-matchers (2.8.0)
|
|
171
|
+
activesupport (>= 3.0.0)
|
|
172
|
+
sidekiq (3.4.1)
|
|
173
|
+
celluloid (~> 0.16.0)
|
|
174
|
+
connection_pool (>= 2.1.1)
|
|
175
|
+
json
|
|
176
|
+
redis (>= 3.0.6)
|
|
177
|
+
redis-namespace (>= 1.3.1)
|
|
178
|
+
simplecov (0.10.0)
|
|
179
|
+
docile (~> 1.1.0)
|
|
180
|
+
json (~> 1.8)
|
|
181
|
+
simplecov-html (~> 0.10.0)
|
|
182
|
+
simplecov-html (0.10.0)
|
|
183
|
+
slop (3.6.0)
|
|
184
|
+
sysexits (1.2.0)
|
|
185
|
+
terminal-table (1.5.2)
|
|
186
|
+
thread_safe (0.3.5)
|
|
187
|
+
tilt (2.0.1)
|
|
188
|
+
timecop (0.8.0)
|
|
189
|
+
timers (4.0.1)
|
|
190
|
+
hitimes
|
|
191
|
+
tzinfo (1.2.2)
|
|
192
|
+
thread_safe (~> 0.1)
|
|
193
|
+
unparser (0.2.4)
|
|
194
|
+
abstract_type (~> 0.0.7)
|
|
195
|
+
adamantium (~> 0.2.0)
|
|
196
|
+
concord (~> 0.1.5)
|
|
197
|
+
diff-lcs (~> 1.2.5)
|
|
198
|
+
equalizer (~> 0.0.9)
|
|
199
|
+
parser (~> 2.2.2)
|
|
200
|
+
procto (~> 0.0.2)
|
|
201
|
+
virtus (1.0.5)
|
|
202
|
+
axiom-types (~> 0.1)
|
|
203
|
+
coercible (~> 1.0)
|
|
204
|
+
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
205
|
+
equalizer (~> 0.0, >= 0.0.9)
|
|
206
|
+
yard (0.8.7.6)
|
|
207
|
+
|
|
208
|
+
PLATFORMS
|
|
209
|
+
ruby
|
|
210
|
+
|
|
211
|
+
DEPENDENCIES
|
|
212
|
+
polishgeeks-dev-tools!
|
|
213
|
+
sidekiq (= 3.4.1)
|
|
214
|
+
sidekiq-glass!
|
data/README.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Sidekiq Glass
|
|
2
|
+
|
|
3
|
+
[](https://travis-ci.org/karafka/sidekiq-glass) [](https://codeclimate.com/github/karafka/sidekiq-glass)
|
|
4
|
+
|
|
5
|
+
Sidekiq worker wrapper that provides optional timeout and after failure (reentrancy).
|
|
6
|
+
|
|
7
|
+
## Reentrancy
|
|
8
|
+
|
|
9
|
+
If you don't know what is reentrancy, you can read about it [here](http://dev.mensfeld.pl/2014/05/ruby-rails-sinatra-background-processing-reentrancy-for-your-workers-is-a-must-be/).
|
|
10
|
+
|
|
11
|
+
## Setup
|
|
12
|
+
When creating a worker that inherits from SidekiqGlass::Worker, the perform_async method provided by Sidekiq is overriden in order to provide
|
|
13
|
+
flexibility in the max number of params a background job can be created with and in the time a background job can take to finish.
|
|
14
|
+
For this, the following methods can be defined:
|
|
15
|
+
|
|
16
|
+
| Method | Arguments | Description |
|
|
17
|
+
|------------------|-----------|---------------------------------------------------------------------------------------------------------------|
|
|
18
|
+
| self.timeout= | Integer | Set the number of seconds that a job can take to finish (if not defined, Sidekiq timeout will be applied) |
|
|
19
|
+
| execute | any_args | Required method that will be invoked when calling Worker::perform_async |
|
|
20
|
+
| after_failure | any_args | Optional method that will be invoked if the execute method fails |
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
Once you've set the gem, you can start using the SidekiqGlass::Worker as following:
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
class Worker1 < SidekiqGlass::Worker
|
|
28
|
+
self.timeout = 3600 # job can run for 1 hour max
|
|
29
|
+
|
|
30
|
+
def execute(*ids)
|
|
31
|
+
SomeService.new.process(ids)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def after_failure(*ids)
|
|
35
|
+
SomeService.new.expire!(ids)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
Worker1.perform_async('id1', 'id2', 'id3')
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```ruby
|
|
43
|
+
class Worker2 < SidekiqGlass::Worker
|
|
44
|
+
def execute(first_param, second_param, third_param)
|
|
45
|
+
SomeService.new.process(first_param, second_param, third_param)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
Worker2.perform_async(example1, example2, example3)
|
|
50
|
+
```
|
data/Rakefile
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'bundler'
|
|
2
|
+
require 'bundler/gem_tasks'
|
|
3
|
+
require 'rake'
|
|
4
|
+
require 'polishgeeks-dev-tools'
|
|
5
|
+
|
|
6
|
+
PolishGeeks::DevTools.setup do |config|
|
|
7
|
+
config.brakeman = false
|
|
8
|
+
config.haml_lint = false
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
desc 'Self check using polishgeeks-dev-tools'
|
|
12
|
+
task :check do
|
|
13
|
+
PolishGeeks::DevTools::Runner.new.execute(
|
|
14
|
+
PolishGeeks::DevTools::Logger.new
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
task default: :check
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Module encapsulating Reentrant specific code
|
|
2
|
+
module SidekiqGlass
|
|
3
|
+
# Timeout class
|
|
4
|
+
class Timeout
|
|
5
|
+
# Raised when timeout occurs
|
|
6
|
+
class TimeoutError < StandardError; end
|
|
7
|
+
|
|
8
|
+
# Executed given method and raises exception if it takes to much time
|
|
9
|
+
# @param [Integer] time in seconds that we allow given block to run
|
|
10
|
+
# @param [Block] block of code that we want to execute with timeout
|
|
11
|
+
# @return Value returned by block
|
|
12
|
+
# @raise [TimeoutError] error when method runs for too long
|
|
13
|
+
# @example Execute a block of code for max 5 seconds
|
|
14
|
+
# ::System::Timeout.perform(5) do
|
|
15
|
+
# # code that should run max 5 seconds
|
|
16
|
+
# end
|
|
17
|
+
def self.perform(time, &block)
|
|
18
|
+
::Timeout.timeout(time, TimeoutError) { block.call }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'sidekiq_glass/version'
|
|
2
|
+
|
|
3
|
+
module SidekiqGlass
|
|
4
|
+
# Base worker class for all other workers
|
|
5
|
+
# @abstract Subclass can be used for all workers in app
|
|
6
|
+
# @note Please use the execute method instead of perform - because of the extra
|
|
7
|
+
# reentracy layer that has been introduced. Also if you define additional
|
|
8
|
+
# after_failure method you can handle any timeout (or any other) errors and ensure
|
|
9
|
+
# reentrancy for your workers
|
|
10
|
+
# @example Create a worker that will have a reentrancy for its task, that will
|
|
11
|
+
# run for max 15 seconds
|
|
12
|
+
#
|
|
13
|
+
# class LazyWorker < SidekiqGlass::Worker
|
|
14
|
+
# self.timeout = 15
|
|
15
|
+
#
|
|
16
|
+
# def execute(arg)
|
|
17
|
+
# # do some stuff here
|
|
18
|
+
# end
|
|
19
|
+
#
|
|
20
|
+
# def after_failure(arg)
|
|
21
|
+
# # do something if there is a timeout or any other error
|
|
22
|
+
# end
|
|
23
|
+
# end
|
|
24
|
+
class Worker
|
|
25
|
+
include Sidekiq::Worker
|
|
26
|
+
|
|
27
|
+
class << self
|
|
28
|
+
attr_accessor :timeout
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param args Any arguments that we can get from Sidekiq
|
|
32
|
+
def perform(*args)
|
|
33
|
+
if self.class.timeout
|
|
34
|
+
::SidekiqGlass::Timeout.perform(self.class.timeout) { execute(*args) }
|
|
35
|
+
else
|
|
36
|
+
execute(*args)
|
|
37
|
+
end
|
|
38
|
+
rescue => exception
|
|
39
|
+
after_failure(*args) if respond_to?(:after_failure)
|
|
40
|
+
raise exception
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
+
require 'rake'
|
|
4
|
+
require 'sidekiq_glass/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "sidekiq-glass"
|
|
8
|
+
spec.version = SidekiqGlass::VERSION
|
|
9
|
+
spec.platform = Gem::Platform::RUBY
|
|
10
|
+
spec.authors = ['Maciej Mensfeld', 'Pavlo Vavruk']
|
|
11
|
+
spec.email = %w( maciej@mensfeld.pl pavlo.vavruk@gmail.com )
|
|
12
|
+
|
|
13
|
+
spec.summary = ''
|
|
14
|
+
spec.description = 'Sidekiq worker wrapper that provides optional timeout and after failure (reentrancy)'
|
|
15
|
+
spec.homepage = ''
|
|
16
|
+
|
|
17
|
+
spec.add_dependency 'sidekiq', '3.4.1'
|
|
18
|
+
|
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
21
|
+
spec.require_paths = %w( lib )
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: sidekiq-glass
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Maciej Mensfeld
|
|
8
|
+
- Pavlo Vavruk
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2015-08-18 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: sidekiq
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - '='
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: 3.4.1
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - '='
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: 3.4.1
|
|
28
|
+
description: Sidekiq worker wrapper that provides optional timeout and after failure
|
|
29
|
+
(reentrancy)
|
|
30
|
+
email:
|
|
31
|
+
- maciej@mensfeld.pl
|
|
32
|
+
- pavlo.vavruk@gmail.com
|
|
33
|
+
executables: []
|
|
34
|
+
extensions: []
|
|
35
|
+
extra_rdoc_files: []
|
|
36
|
+
files:
|
|
37
|
+
- ".gitignore"
|
|
38
|
+
- ".ruby-gemset"
|
|
39
|
+
- ".ruby-version"
|
|
40
|
+
- ".travis.yml"
|
|
41
|
+
- Gemfile
|
|
42
|
+
- Gemfile.lock
|
|
43
|
+
- README.md
|
|
44
|
+
- Rakefile
|
|
45
|
+
- lib/sidekiq_glass.rb
|
|
46
|
+
- lib/sidekiq_glass/timeout.rb
|
|
47
|
+
- lib/sidekiq_glass/version.rb
|
|
48
|
+
- lib/sidekiq_glass/worker.rb
|
|
49
|
+
- sidekiq-glass.gemspec
|
|
50
|
+
homepage: ''
|
|
51
|
+
licenses: []
|
|
52
|
+
metadata: {}
|
|
53
|
+
post_install_message:
|
|
54
|
+
rdoc_options: []
|
|
55
|
+
require_paths:
|
|
56
|
+
- lib
|
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0'
|
|
67
|
+
requirements: []
|
|
68
|
+
rubyforge_project:
|
|
69
|
+
rubygems_version: 2.4.6
|
|
70
|
+
signing_key:
|
|
71
|
+
specification_version: 4
|
|
72
|
+
summary: ''
|
|
73
|
+
test_files: []
|
|
74
|
+
has_rdoc:
|