jobify 0.2.0 → 0.3.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 +4 -4
- data/.ruby-version +1 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +0 -4
- data/Gemfile.lock +5 -4
- data/jobify.gemspec +3 -0
- data/lib/jobify/version.rb +1 -1
- data/lib/jobify.rb +14 -5
- metadata +32 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c34bf93e6019d918312706b17ed0503044d2dc4ea16de824702223afa879d49
|
4
|
+
data.tar.gz: 2328a20bc2654f9053d85694d062bda712762d00100747f0a68166436df56729
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ed50a875bdff43a912fa392cc852c4f80ddc43c10d453037ecc5c64c1407a93d83a23f3ae078d27a6ba63d8588ef3d2c5bdc3dd148a5e190e0e19020c577ce5
|
7
|
+
data.tar.gz: 9dd6f7b8765756f3ec85979e75564254970ac8851b42d23431b8434f24a79d5114a6bb61aa181b230d6889c2d4aa906cecb9c2fd349c5d878586d97fb63f79a3
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.6
|
data/CHANGELOG.md
CHANGED
@@ -13,3 +13,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
13
13
|
- Add support for my_method?
|
14
14
|
- Add support for my_method!
|
15
15
|
- Allow POROs with same-name class and instance methods to jobify class methods
|
16
|
+
|
17
|
+
## [0.3.0] - 2022-11-13
|
18
|
+
- Add support for private methods
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jobify (0.
|
4
|
+
jobify (0.3.0)
|
5
5
|
activejob
|
6
6
|
activesupport
|
7
7
|
|
@@ -31,14 +31,14 @@ GEM
|
|
31
31
|
rake (13.0.6)
|
32
32
|
regexp_parser (2.6.0)
|
33
33
|
rexml (3.2.5)
|
34
|
-
rubocop (1.
|
34
|
+
rubocop (1.38.0)
|
35
35
|
json (~> 2.3)
|
36
36
|
parallel (~> 1.10)
|
37
37
|
parser (>= 3.1.2.1)
|
38
38
|
rainbow (>= 2.2.2, < 4.0)
|
39
39
|
regexp_parser (>= 1.8, < 3.0)
|
40
40
|
rexml (>= 3.2.5, < 4.0)
|
41
|
-
rubocop-ast (>= 1.
|
41
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
42
42
|
ruby-progressbar (~> 1.7)
|
43
43
|
unicode-display_width (>= 1.4.0, < 3.0)
|
44
44
|
rubocop-ast (1.23.0)
|
@@ -50,6 +50,7 @@ GEM
|
|
50
50
|
|
51
51
|
PLATFORMS
|
52
52
|
x86_64-darwin-20
|
53
|
+
x86_64-darwin-21
|
53
54
|
x86_64-linux
|
54
55
|
|
55
56
|
DEPENDENCIES
|
@@ -59,4 +60,4 @@ DEPENDENCIES
|
|
59
60
|
rubocop (~> 1.21)
|
60
61
|
|
61
62
|
BUNDLED WITH
|
62
|
-
2.3.
|
63
|
+
2.3.18
|
data/jobify.gemspec
CHANGED
@@ -34,6 +34,9 @@ Gem::Specification.new do |spec|
|
|
34
34
|
# Uncomment to register a new dependency of your gem
|
35
35
|
spec.add_dependency "activejob"
|
36
36
|
spec.add_dependency "activesupport"
|
37
|
+
|
38
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
39
|
+
spec.add_development_dependency "rubocop", "~> 1.21"
|
37
40
|
|
38
41
|
# For more information and examples about making a new gem, check out our
|
39
42
|
# guide at: https://bundler.io/guides/creating_gem.html
|
data/lib/jobify/version.rb
CHANGED
data/lib/jobify.rb
CHANGED
@@ -27,13 +27,13 @@ module Jobify
|
|
27
27
|
method_name = method_name.to_s
|
28
28
|
job_method_name = job_method_name(method_name, job_method_name)
|
29
29
|
|
30
|
-
if
|
30
|
+
if has_class_method?(method_name) && !@jobified_methods[:singleton][method_name]
|
31
31
|
# Class methods are jobified first,
|
32
32
|
# so that class methods can be jobified by POROs with same-name instance methods
|
33
33
|
params = method(method_name).parameters
|
34
34
|
_define_job_class(method_name, job_method_name, params, singleton_method: true)
|
35
35
|
@jobified_methods[:singleton][method_name] = true
|
36
|
-
elsif
|
36
|
+
elsif has_instance_method?(method_name) && !@jobified_methods[:instance][method_name]
|
37
37
|
# Instance method
|
38
38
|
params = instance_method(method_name).parameters
|
39
39
|
_define_job_class(method_name, job_method_name, params, singleton_method: false)
|
@@ -69,9 +69,9 @@ module Jobify
|
|
69
69
|
def self.singleton__define_job_perform_method(job_class, caller_class, method_name)
|
70
70
|
job_class.define_method(:perform) do |*args, **kw_args|
|
71
71
|
if kw_args.empty?
|
72
|
-
caller_class.
|
72
|
+
caller_class.send(method_name, *args)
|
73
73
|
else
|
74
|
-
caller_class.
|
74
|
+
caller_class.send(method_name, *args, **kw_args)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -98,7 +98,7 @@ module Jobify
|
|
98
98
|
raise "Something has gone wrong. Record id is required" unless id
|
99
99
|
|
100
100
|
record = caller_class.find(id)
|
101
|
-
record.
|
101
|
+
record.send(method_name, *args, **kw_args)
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -139,5 +139,14 @@ module Jobify
|
|
139
139
|
def ensure_all_args_present!(req_args, args)
|
140
140
|
self.class.ensure_all_args_present!(req_args, args)
|
141
141
|
end
|
142
|
+
|
143
|
+
def self.has_class_method?(method_name)
|
144
|
+
respond_to?(method_name, true)
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.has_instance_method?(method_name)
|
148
|
+
method_defined?(method_name) || private_method_defined?(method_name)
|
149
|
+
end
|
150
|
+
|
142
151
|
end
|
143
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jobify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Søren Houen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.21'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.21'
|
41
69
|
description:
|
42
70
|
email:
|
43
71
|
- s@houen.net
|
@@ -46,6 +74,7 @@ extensions: []
|
|
46
74
|
extra_rdoc_files: []
|
47
75
|
files:
|
48
76
|
- ".rubocop.yml"
|
77
|
+
- ".ruby-version"
|
49
78
|
- CHANGELOG.md
|
50
79
|
- Gemfile
|
51
80
|
- Gemfile.lock
|
@@ -80,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
109
|
- !ruby/object:Gem::Version
|
81
110
|
version: '0'
|
82
111
|
requirements: []
|
83
|
-
rubygems_version: 3.
|
112
|
+
rubygems_version: 3.1.6
|
84
113
|
signing_key:
|
85
114
|
specification_version: 4
|
86
115
|
summary: Turn any method into a background job (`jobify :hello_world` generates `def
|