resque-rate_limited_queue 1.0.3 → 1.0.4

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 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: