sidekiq-recursive 0.1.0 → 0.2.1

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
- SHA1:
3
- metadata.gz: 1f8039623c6e6890c840050a797e2d2a4a336d0e
4
- data.tar.gz: a34b1e3f4f7385f3286e0e6dffc997f54e6cd94e
2
+ SHA256:
3
+ metadata.gz: 167fe7d1d7abfc01a5b0efd0ae38c6a973a36123ee4c0f46af01e82a84aa3bf8
4
+ data.tar.gz: 0f69a42dbca65d9e598cd62514e761f41cce05bc84a6a8fbb85ec9dfc96b6ad3
5
5
  SHA512:
6
- metadata.gz: 7d1b745ac1162cb03dc27c89d2e9e87674ff395b235d22ff75d3795d6da994470f4bf603cb3ff019fc684df1858b2a0d875bb45c3604be1c583e8ebd3f18bf18
7
- data.tar.gz: 25f1d7fe4856aa606bb73935b3ae3580ff10e354bf6d12a1f096e2ba8bfb4af0bdccb85e923912528318a188737da6884913498fa78c3b47a70c42810a8e5386
6
+ metadata.gz: d3e0c107ea4dc180ca9ce67ca578881ca99e233882ebda43f271ed6da56df98c210c1c09239eeec958b4a94da939b1a6768ce329a3f9d46251b4dc442efd2aab
7
+ data.tar.gz: b85598a1f13ab9a6ce0fe4d773d1c9e47167f3a6eda4df2201078f43d7767ac5718d48cf576de756583051f302fe078d8fedc76b5f7d17aa78b830bf04e72bf3
@@ -0,0 +1,9 @@
1
+ class Sidekiq::Recursive::Hooks::AfterAll
2
+ def self.run(worker, worker_id)
3
+ action_name = worker.after_all
4
+ return unless action_name
5
+ return unless worker.recursive_worker_count == worker_id
6
+ worker.new.send(action_name)
7
+ true
8
+ end
9
+ end
@@ -0,0 +1,8 @@
1
+ class Sidekiq::Recursive::Hooks::BeforeAll
2
+ def self.run(worker)
3
+ action_name = worker.before_all
4
+ return unless action_name
5
+ worker.new.send(action_name)
6
+ true
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ module Sidekiq::Recursive::Hooks
2
+ end
@@ -4,7 +4,7 @@ class Sidekiq::Recursive::Perform
4
4
  return worker_instance.process(argument) if worker_id == :failed_worker
5
5
  safe_process(worker_instance, argument)
6
6
  next_argument = Sidekiq::Recursive::ArgumentQueue.pop(worker)
7
- return unless next_argument
7
+ return Sidekiq::Recursive::Hooks::AfterAll.run(worker, worker_id) unless next_argument
8
8
  worker.perform_async(worker_id, next_argument)
9
9
 
10
10
  true
@@ -12,7 +12,7 @@ class Sidekiq::Recursive::Perform
12
12
 
13
13
  def self.safe_process(worker_instance, argument)
14
14
  worker_instance.process(argument)
15
- rescue
15
+ rescue StandardError
16
16
  worker_instance.class.perform_async(:failed_worker, argument)
17
17
  end
18
18
  end
@@ -1,6 +1,7 @@
1
1
  class Sidekiq::Recursive::Start
2
2
  def self.run(worker, arguments)
3
3
  Sidekiq::Recursive::ArgumentQueue.push(worker, arguments)
4
+ Sidekiq::Recursive::Hooks::BeforeAll.run(worker)
4
5
 
5
6
  1.upto(worker.recursive_worker_count) do |worker_id|
6
7
  argument = Sidekiq::Recursive::ArgumentQueue.pop(worker)
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Recursive
3
- VERSION = "0.1.0"
3
+ VERSION = '0.2.1'
4
4
  end
5
5
  end
@@ -14,6 +14,14 @@ module Sidekiq::Recursive::Worker
14
14
  raise Sidekiq::Recursive::UndefinedWorkerCountError if count.nil? && @worker_count.nil?
15
15
  @worker_count ||= count
16
16
  end
17
+
18
+ def before_all(action_name = nil)
19
+ @before_all ||= action_name
20
+ end
21
+
22
+ def after_all(action_name = nil)
23
+ @after_all ||= action_name
24
+ end
17
25
  end
18
26
 
19
27
  module InstanceMethods
@@ -1,7 +1,11 @@
1
+ require 'sidekiq/recursive/version'
2
+
1
3
  require 'sidekiq/recursive/argument_queue'
4
+ require 'sidekiq/recursive/hooks'
5
+ require 'sidekiq/recursive/hooks/after_all'
6
+ require 'sidekiq/recursive/hooks/before_all'
2
7
  require 'sidekiq/recursive/perform'
3
8
  require 'sidekiq/recursive/start'
4
- require 'sidekiq/recursive/version'
5
9
  require 'sidekiq/recursive/worker'
6
10
 
7
11
  module Sidekiq
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-recursive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justas Kazakauskas
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-31 00:00:00.000000000 Z
11
+ date: 2024-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.0'
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.1'
22
+ version: '7.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,107 +29,27 @@ dependencies:
29
29
  version: '3.0'
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.1'
33
- - !ruby/object:Gem::Dependency
34
- name: bundler
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1.16'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '1.16'
47
- - !ruby/object:Gem::Dependency
48
- name: fakeredis
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 0.7.0
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 0.7.0
61
- - !ruby/object:Gem::Dependency
62
- name: pry
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 0.11.3
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.11.3
75
- - !ruby/object:Gem::Dependency
76
- name: rake
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '12.3'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '12.3'
89
- - !ruby/object:Gem::Dependency
90
- name: rspec
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '3.7'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '3.7'
32
+ version: '7.0'
103
33
  description: Use simple recursion to limit sidekiq workers per job.
104
34
  email: leakymirror@gmail.com
105
35
  executables: []
106
36
  extensions: []
107
37
  extra_rdoc_files: []
108
38
  files:
109
- - ".gitignore"
110
- - ".rspec"
111
- - ".travis.yml"
112
- - CODE_OF_CONDUCT.md
113
- - Gemfile
114
- - Gemfile.lock
115
- - LICENSE.txt
116
- - Makefile
117
- - README.md
118
- - Rakefile
119
- - bin/console
120
- - bin/setup
121
39
  - lib/sidekiq/recursive.rb
122
40
  - lib/sidekiq/recursive/argument_queue.rb
41
+ - lib/sidekiq/recursive/hooks.rb
42
+ - lib/sidekiq/recursive/hooks/after_all.rb
43
+ - lib/sidekiq/recursive/hooks/before_all.rb
123
44
  - lib/sidekiq/recursive/perform.rb
124
45
  - lib/sidekiq/recursive/start.rb
125
46
  - lib/sidekiq/recursive/version.rb
126
47
  - lib/sidekiq/recursive/worker.rb
127
- - sidekiq-recursive.gemspec
128
48
  homepage: https://github.com/justaskz/sidekiq-recursive
129
49
  licenses:
130
50
  - MIT
131
51
  metadata: {}
132
- post_install_message:
52
+ post_install_message:
133
53
  rdoc_options: []
134
54
  require_paths:
135
55
  - lib
@@ -137,16 +57,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
57
  requirements:
138
58
  - - ">="
139
59
  - !ruby/object:Gem::Version
140
- version: '2.0'
60
+ version: '2.7'
141
61
  required_rubygems_version: !ruby/object:Gem::Requirement
142
62
  requirements:
143
63
  - - ">="
144
64
  - !ruby/object:Gem::Version
145
65
  version: '0'
146
66
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.6.11
149
- signing_key:
67
+ rubygems_version: 3.5.3
68
+ signing_key:
150
69
  specification_version: 4
151
70
  summary: Use simple recursion to limit sidekiq workers per job
152
71
  test_files: []
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- *gem
10
-
11
- # rspec failure tracking
12
- .rspec_status
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --require spec_helper
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.1
5
- before_install: gem install bundler -v 1.16.1
data/CODE_OF_CONDUCT.md DELETED
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at justas.kazakauskas@vinted.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in sidekiq-recursive.gemspec
6
- gemspec
data/Gemfile.lock DELETED
@@ -1,56 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sidekiq-recursive (0.1.0)
5
- sidekiq (~> 5.1, >= 3.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- coderay (1.1.2)
11
- concurrent-ruby (1.0.5)
12
- connection_pool (2.2.1)
13
- diff-lcs (1.3)
14
- fakeredis (0.7.0)
15
- redis (>= 3.2, < 5.0)
16
- method_source (0.9.0)
17
- pry (0.11.3)
18
- coderay (~> 1.1.0)
19
- method_source (~> 0.9.0)
20
- rack (2.0.4)
21
- rack-protection (2.0.1)
22
- rack
23
- rake (12.3.1)
24
- redis (4.0.1)
25
- rspec (3.7.0)
26
- rspec-core (~> 3.7.0)
27
- rspec-expectations (~> 3.7.0)
28
- rspec-mocks (~> 3.7.0)
29
- rspec-core (3.7.1)
30
- rspec-support (~> 3.7.0)
31
- rspec-expectations (3.7.0)
32
- diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.7.0)
34
- rspec-mocks (3.7.0)
35
- diff-lcs (>= 1.2.0, < 2.0)
36
- rspec-support (~> 3.7.0)
37
- rspec-support (3.7.1)
38
- sidekiq (5.1.2)
39
- concurrent-ruby (~> 1.0)
40
- connection_pool (~> 2.2, >= 2.2.0)
41
- rack-protection (>= 1.5.0)
42
- redis (>= 3.3.5, < 5)
43
-
44
- PLATFORMS
45
- ruby
46
-
47
- DEPENDENCIES
48
- bundler (~> 1.16)
49
- fakeredis (~> 0.7.0)
50
- pry (~> 0.11.3)
51
- rake (~> 12.3)
52
- rspec (~> 3.7)
53
- sidekiq-recursive!
54
-
55
- BUNDLED WITH
56
- 1.16.1
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2018 Justas Kazakauskas
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
data/Makefile DELETED
@@ -1,13 +0,0 @@
1
- test:
2
- @ rspec
3
-
4
- build: clear
5
- @ bundle
6
- @ gem build *.gemspec
7
-
8
- release: test build
9
- @ gem push *.gem
10
-
11
- clear:
12
- @ rm -rf pkg
13
- @ rm -rf *.gem
data/README.md DELETED
@@ -1,54 +0,0 @@
1
- # Sidekiq::Recursive
2
- Use simple recursion to limit sidekiq workers per job
3
-
4
- ## Installation
5
-
6
- Add this line to your application's Gemfile:
7
-
8
- ```ruby
9
- gem 'sidekiq-recursive'
10
- ```
11
-
12
- And then execute:
13
-
14
- $ bundle
15
-
16
- Or install it yourself as:
17
-
18
- $ gem install sidekiq-recursive
19
-
20
- ## Usage
21
-
22
- ```ruby
23
- class CleanUpOldUsers
24
- include Sidekiq::Worker
25
- include Sidekiq::Recursive::Worker
26
-
27
- recursive_worker_count 5
28
-
29
- def process(user_id)
30
- User.destroy(user_id)
31
- end
32
- end
33
-
34
- user_ids = User.where(is_old: true).ids
35
- CleanUpOldUsers.run(user_ids)
36
- ```
37
-
38
- ## Development
39
-
40
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
41
-
42
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
43
-
44
- ## Contributing
45
-
46
- Bug reports and pull requests are welcome on GitHub at https://github.com/justaskz/sidekiq-recursive. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
47
-
48
- ## License
49
-
50
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
51
-
52
- ## Code of Conduct
53
-
54
- Everyone interacting in the Sidekiq::Recursive project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/justaskz/sidekiq-recursive/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "sidekiq/recursive"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
@@ -1,32 +0,0 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'sidekiq/recursive/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'sidekiq-recursive'
7
- spec.version = Sidekiq::Recursive::VERSION
8
- spec.authors = 'Justas Kazakauskas'
9
- spec.email = 'leakymirror@gmail.com'
10
-
11
- spec.summary = 'Use simple recursion to limit sidekiq workers per job'
12
- spec.description = 'Use simple recursion to limit sidekiq workers per job.'
13
- spec.homepage = 'https://github.com/justaskz/sidekiq-recursive'
14
- spec.license = 'MIT'
15
-
16
- spec.required_ruby_version = '>= 2.0'
17
-
18
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
- f.match(%r{^(test|spec|features)/})
20
- end
21
- spec.bindir = 'exe'
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ['lib']
24
-
25
- spec.add_runtime_dependency 'sidekiq', '>= 3.0', '~> 5.1'
26
-
27
- spec.add_development_dependency 'bundler', '~> 1.16'
28
- spec.add_development_dependency 'fakeredis', '~> 0.7.0'
29
- spec.add_development_dependency 'pry', '~> 0.11.3'
30
- spec.add_development_dependency 'rake', '~> 12.3'
31
- spec.add_development_dependency 'rspec', '~> 3.7'
32
- end