resque-rate_limited_queue 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3d514482bdda5f90ef98a9d898bfe9cc2bd3a4c
4
- data.tar.gz: 0f2162ec01cb03476e918d62545a5fc9081000e9
3
+ metadata.gz: 5cab3ff531eddf3677d1dce33e4d8d0a4dc9d515
4
+ data.tar.gz: 2b916b8dd1515d1fe533ae20115bf45f05d1985a
5
5
  SHA512:
6
- metadata.gz: a688b780cffbef935aea3a5d7a6402c255e3933e91bb9367bd18b830a76669b209afdf9c74f4b97ce883e1aad1382b0f7df68592762ffe0f18665b6b196e2d29
7
- data.tar.gz: 183fa3c3080f6de61da2d9d157666fa078ea094c025658993ed6e1097b7482bb8f61013148a13ebaf8b944695a1f623a5d4bb4891a87254523afd2c940a14722
6
+ metadata.gz: 2a33bc20ca9ddb4424c0728dbba292b50df89167697240e2a3edb253ba47dc4a4f5a4eb54fe6b5b38053bb6f0b9f1242007b5aff7aeb41493ff728245ecbd790
7
+ data.tar.gz: 5bdf3b1ebd1d2860facd9d2630ca79a3cd94f28ca1104430f84c8a4b09c881ba203789db738ea8ae5bb06e6562fb15e6161050026abab739b3ae200388dc3048
data/.hound.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ ruby:
3
+ enabled: true
4
+ config_file: .rubocop.yml
data/.rubocop.yml ADDED
@@ -0,0 +1,46 @@
1
+ ---
2
+ AllCops:
3
+ Exclude:
4
+ - 'tmp/**/*'
5
+ - 'coverage/**/*'
6
+ - 'spec/dummy/**/*'
7
+
8
+ #-------------------------------------------------------------------------------
9
+ # Project standards
10
+ #-------------------------------------------------------------------------------
11
+ StringLiterals:
12
+ EnforcedStyle: single_quotes
13
+ Enabled: true
14
+
15
+ DotPosition:
16
+ Description: 'Checks the position of the dot in multi-line method calls.'
17
+ EnforcedStyle: leading
18
+ Enabled: true
19
+
20
+ Documentation:
21
+ Description: 'Document classes and non-namespace modules.'
22
+ Enabled: false
23
+
24
+ FileName:
25
+ Description: 'Use snake_case for source file names.'
26
+ Enabled: true
27
+
28
+ Style/SymbolArray:
29
+ Description: 'Use %i or %I for arrays of symbols.'
30
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-i'
31
+ Enabled: false # Only available in Ruby 2.0+
32
+
33
+ Style/ExtraSpacing:
34
+ Description: 'Do not use unnecessary spacing.'
35
+ Enabled: true
36
+
37
+ Lint/LiteralInInterpolation:
38
+ Description: 'Avoid interpolating literals in strings'
39
+ AutoCorrect: true
40
+
41
+ #-------------------------------------------------------------------------------
42
+ # These rules have been relaxed because of existing code
43
+ # We should tighten these up over time
44
+ #-------------------------------------------------------------------------------
45
+ LineLength:
46
+ Max: 166 # project standard is 120
data/Guardfile ADDED
@@ -0,0 +1,16 @@
1
+ guard :rubocop do
2
+ watch(/.+\.rb$/)
3
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
4
+ end
5
+
6
+ guard(
7
+ :rspec,
8
+ all_after_pass: true,
9
+ all_on_start: true,
10
+ cmd: 'NO_SIMPLECOV=true bundle exec rspec --fail-fast --format documentation'
11
+ ) do
12
+ watch(%r{spec/.+_spec\.rb$})
13
+ watch(%r{lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
14
+ watch('spec/spec_helper.rb') { 'spec' }
15
+ watch(%r{^spec/support/.+\.rb$}) { 'spec' }
16
+ end
data/Rakefile CHANGED
@@ -1,2 +1 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require 'bundler/gem_tasks'
@@ -1,3 +1,3 @@
1
1
  module RateLimitedQueue
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.4'
3
3
  end
@@ -9,6 +9,7 @@ module Resque
9
9
  def self.perform(klass, *params)
10
10
  super
11
11
  rescue Evernote::EDAM::Error::EDAMSystemException => e
12
+ raise unless e.errorCode == Evernote::EDAM::Error::EDAMErrorCode::RATE_LIMIT_REACHED
12
13
  pause_until(Time.now + 60 * e.rateLimitDuration.seconds)
13
14
  rate_limited_requeue(self, klass, *params)
14
15
  end
@@ -4,37 +4,40 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'resque-rate_limited_queue/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "resque-rate_limited_queue"
7
+ spec.name = 'resque-rate_limited_queue'
8
8
  spec.version = RateLimitedQueue::VERSION
9
- spec.authors = ["Greg Dowling"]
10
- spec.email = ["mail@greddowling.com"]
11
- spec.summary = %q{A Resque plugin to help manage jobs that use rate limited apis, pausing when you hit the limits and restarting later.}
12
- spec.description = %q{A Resque plugin which allows you to create dedicated queues for jobs that use rate limited apis.
9
+ spec.authors = ['Greg Dowling']
10
+ spec.email = ['mail@greddowling.com']
11
+ spec.summary = 'A Resque plugin to help manage jobs that use rate limited apis, pausing when you hit the limits and restarting later.'
12
+ spec.description = 'A Resque plugin which allows you to create dedicated queues for jobs that use rate limited apis.
13
13
  These queues will pause when one of the jobs hits a rate limit, and unpause after a suitable time period.
14
14
  The rate_limited_queue can be used directly, and just requires catching the rate limit exception and pausing the
15
15
  queue. There are also additional queues provided that already include the pause/rety logic for twitter, angelist
16
- and evernote; these allow you to support rate limited apis with minimal changes.}
16
+ and evernote; these allow you to support rate limited apis with minimal changes.'
17
17
 
18
- spec.homepage = "http://github.com/pavoni/resque-rate-limited-queue"
19
- spec.license = "MIT"
18
+ spec.homepage = 'http://github.com/pavoni/resque-rate-limited-queue'
19
+ spec.license = 'MIT'
20
20
 
21
21
  spec.files = `git ls-files -z`.split("\x0")
22
22
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
- spec.require_paths = ["lib"]
25
-
26
- spec.add_dependency('resque', '~> 1.9', '>= 1.9.10')
27
- spec.add_dependency('redis-mutex','~> 4.0', '>= 4.0.0')
28
-
29
- spec.add_dependency("angellist_api", '~> 1.0', '>= 1.0.7')
30
- spec.add_dependency("evernote-thrift", '~> 1.25', '>= 1.25.1')
31
- spec.add_dependency("twitter", '~> 5.11', '>= 5.11.0')
32
-
33
-
34
- spec.add_development_dependency("bundler", "~> 1.7")
35
- spec.add_development_dependency("rake", "~> 10.0")
36
- spec.add_development_dependency("rspec", "~> 2.6")
37
- spec.add_development_dependency("simplecov", '~> 0.9.1')
38
-
39
-
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_dependency 'resque', '~> 1.9', '>= 1.9.10'
27
+ spec.add_dependency 'redis-mutex', '~> 4.0', '>= 4.0.0'
28
+
29
+ spec.add_dependency 'angellist_api', '~> 1.0', '>= 1.0.7'
30
+ spec.add_dependency 'evernote-thrift', '~> 1.25', '>= 1.25.1'
31
+ spec.add_dependency 'twitter', '~> 5.11', '>= 5.11.0'
32
+
33
+ spec.add_development_dependency 'bundler', '~> 1.7'
34
+ spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rspec', '~> 2.6'
36
+ spec.add_development_dependency 'simplecov', '~> 0.9.1'
37
+ spec.add_development_dependency 'gem-release', '~> 0.7'
38
+ spec.add_development_dependency 'guard', '~> 2.12'
39
+ spec.add_development_dependency 'guard-rspec', '~> 4.1', '>= 4.1.1'
40
+ spec.add_development_dependency 'guard-rubocop', '~> 1.2'
41
+ spec.add_development_dependency 'parser', '~> 2.2.2.5' # To avoid Rubocop parser warnings
42
+ spec.add_development_dependency 'rubocop', '~> 0.32'
40
43
  end
@@ -3,7 +3,7 @@ require 'resque/rate_limited_queue'
3
3
 
4
4
  class RateLimitedTestQueueAL
5
5
  def self.perform(succeed)
6
- raise(AngellistApi::Error::TooManyRequests, 'error') unless succeed
6
+ fail(AngellistApi::Error::TooManyRequests, 'error') unless succeed
7
7
  end
8
8
  end
9
9
 
@@ -9,7 +9,17 @@ end
9
9
 
10
10
  class RateLimitedTestQueueEn
11
11
  def self.perform(succeed)
12
- raise(Evernote::EDAM::Error::EDAMSystemException, rateLimitDuration: RateLimitDuration) unless succeed
12
+ fail(
13
+ Evernote::EDAM::Error::EDAMSystemException,
14
+ errorCode: Evernote::EDAM::Error::EDAMErrorCode::RATE_LIMIT_REACHED,
15
+ rateLimitDuration: RateLimitDuration
16
+ ) unless succeed
17
+ end
18
+ end
19
+
20
+ class RateLimitedTestQueueOther
21
+ def self.perform
22
+ fail(Evernote::EDAM::Error::EDAMSystemException)
13
23
  end
14
24
  end
15
25
 
@@ -51,6 +61,16 @@ describe Resque::Plugins::RateLimitedQueue::EvernoteQueue do
51
61
  .enqueue(RateLimitedTestQueueEn, false)
52
62
  end
53
63
  end
64
+
65
+ context 'with exception that is not rate limit' do
66
+ before do
67
+ Resque::Plugins::RateLimitedQueue::EvernoteQueue.stub(:rate_limited_requeue)
68
+ end
69
+ it 'raises the exception when request fails' do
70
+ expect do
71
+ Resque::Plugins::RateLimitedQueue::EvernoteQueue.enqueue(RateLimitedTestQueueOther)
72
+ end.to raise_error Evernote::EDAM::Error::EDAMSystemException
73
+ end
74
+ end
54
75
  end
55
76
  end
56
-
@@ -3,7 +3,7 @@ require 'resque/rate_limited_queue'
3
3
 
4
4
  class RateLimitedTestQueueTw
5
5
  def self.perform(succeed)
6
- raise(Twitter::Error::TooManyRequests
6
+ fail(Twitter::Error::TooManyRequests
7
7
  .new('', 'x-rate-limit-reset' => (Time.now + 60).to_i)) unless succeed
8
8
  end
9
9
  end
@@ -45,5 +45,4 @@ describe Resque::Plugins::RateLimitedQueue::UnPause do
45
45
  .to eq(Resque::Plugins::RateLimitedQueue::UnPause)
46
46
  end
47
47
  end
48
-
49
48
  end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ require 'simplecov'
9
9
 
10
10
  SimpleCov.start
11
11
 
12
- RSpec.configure do |config|
12
+ RSpec.configure do |_config|
13
13
  # Use database 15 for testing so we don't accidentally step on your real data.
14
14
  RedisClassy.redis = Redis.new(db: 15)
15
15
  unless RedisClassy.keys.empty?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-rate_limited_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Dowling
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-06 00:00:00.000000000 Z
11
+ date: 2016-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: resque
@@ -166,6 +166,96 @@ dependencies:
166
166
  - - "~>"
167
167
  - !ruby/object:Gem::Version
168
168
  version: 0.9.1
169
+ - !ruby/object:Gem::Dependency
170
+ name: gem-release
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '0.7'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '0.7'
183
+ - !ruby/object:Gem::Dependency
184
+ name: guard
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '2.12'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: '2.12'
197
+ - !ruby/object:Gem::Dependency
198
+ name: guard-rspec
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '4.1'
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: 4.1.1
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '4.1'
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: 4.1.1
217
+ - !ruby/object:Gem::Dependency
218
+ name: guard-rubocop
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: '1.2'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - "~>"
229
+ - !ruby/object:Gem::Version
230
+ version: '1.2'
231
+ - !ruby/object:Gem::Dependency
232
+ name: parser
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: 2.2.2.5
238
+ type: :development
239
+ prerelease: false
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: 2.2.2.5
245
+ - !ruby/object:Gem::Dependency
246
+ name: rubocop
247
+ requirement: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: '0.32'
252
+ type: :development
253
+ prerelease: false
254
+ version_requirements: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: '0.32'
169
259
  description: |-
170
260
  A Resque plugin which allows you to create dedicated queues for jobs that use rate limited apis.
171
261
  These queues will pause when one of the jobs hits a rate limit, and unpause after a suitable time period.
@@ -179,8 +269,11 @@ extensions: []
179
269
  extra_rdoc_files: []
180
270
  files:
181
271
  - ".gitignore"
272
+ - ".hound.yml"
182
273
  - ".rspec"
274
+ - ".rubocop.yml"
183
275
  - Gemfile
276
+ - Guardfile
184
277
  - LICENSE.txt
185
278
  - README.md
186
279
  - Rakefile
@@ -231,4 +324,3 @@ test_files:
231
324
  - spec/rate_limited_queue_spec.rb
232
325
  - spec/rate_limited_un_pause_spec.rb
233
326
  - spec/spec_helper.rb
234
- has_rdoc: