sidekiq_result 0.1.3 → 0.1.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 +4 -4
- data/.travis.yml +7 -4
- data/README.md +1 -11
- data/lib/sidekiq_result.rb +6 -0
- data/lib/sidekiq_result/server_middleware.rb +3 -0
- data/lib/sidekiq_result/storage.rb +14 -2
- data/lib/sidekiq_result/version.rb +2 -1
- data/lib/sidekiq_result/worker.rb +9 -0
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98d8d02fe6a8c1d6c48ed1661147f36dee0db6b3
|
4
|
+
data.tar.gz: e55be9cd0ff5b319c47d26b8342515ded423a648
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c59bb09bcde652a5576461abf5d7213a6074c0b3e5ff9268aa94758f428619193732c253821f3ba790cf76a94c8a6ae9e0b84846500c40c6797b2647d0fdff1
|
7
|
+
data.tar.gz: 88657ff68f8edf58c3cc7ec3e4eae0861039eb434542e678e7e4e1e04929cce5cb6fd8aa9c41b8c433e4d3d5308374b0eae085e7a52c9de0f29f933b0118b967
|
data/.travis.yml
CHANGED
@@ -2,8 +2,8 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 2.0
|
4
4
|
- 2.1
|
5
|
-
- 2.2
|
6
|
-
-
|
5
|
+
- 2.2.0
|
6
|
+
- 2.2.2
|
7
7
|
- rbx-2
|
8
8
|
before_install: gem install bundler -v 1.10.5
|
9
9
|
gemfile:
|
@@ -11,5 +11,8 @@ gemfile:
|
|
11
11
|
services: redis
|
12
12
|
matrix:
|
13
13
|
allow_failures:
|
14
|
-
- rvm:
|
15
|
-
|
14
|
+
- rvm: rbx-2
|
15
|
+
notifications:
|
16
|
+
email:
|
17
|
+
on_success: never
|
18
|
+
on_failure: change
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
[](http://badge.fury.io/rb/sidekiq_result)
|
3
3
|
[](https://codeclimate.com/github/ChrisMacNaughton/sidekiq_result)
|
4
4
|
[](http://travis-ci.org/ChrisMacNaughton/sidekiq_result)
|
5
|
+
[](https://inch-ci.org/github/ChrisMacNaughton/sidekiq_result)
|
5
6
|
|
6
7
|
An extension to [Sidekiq](http://github.com/mperham/sidekiq) message processing to track your job results.
|
7
8
|
|
@@ -24,9 +25,6 @@ Sidekiq.configure_server do |config|
|
|
24
25
|
config.server_middleware do |chain|
|
25
26
|
chain.add Sidekiq::Result::ServerMiddleware, expiration: 30.minutes # default
|
26
27
|
end
|
27
|
-
config.client_middleware do |chain|
|
28
|
-
chain.add Sidekiq::Result::ClientMiddleware
|
29
|
-
end
|
30
28
|
end
|
31
29
|
```
|
32
30
|
|
@@ -62,18 +60,10 @@ end
|
|
62
60
|
|
63
61
|
But keep in mind that such thing will store details of job as long as expiration is set, so it may charm your Redis storage/memory consumption. Because Redis stores all data in RAM.
|
64
62
|
|
65
|
-
|
66
|
-
## Development
|
67
|
-
|
68
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
69
|
-
|
70
|
-
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).
|
71
|
-
|
72
63
|
## Contributing
|
73
64
|
|
74
65
|
Bug reports and pull requests are welcome on GitHub at https://github.com/chrismacnaughton/sidekiq_result.
|
75
66
|
|
76
|
-
|
77
67
|
## License
|
78
68
|
|
79
69
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/sidekiq_result.rb
CHANGED
@@ -2,6 +2,9 @@ require 'sidekiq_result/version'
|
|
2
2
|
require 'sidekiq_result/storage'
|
3
3
|
require 'sidekiq_result/server_middleware'
|
4
4
|
require 'sidekiq_result/worker'
|
5
|
+
|
6
|
+
|
7
|
+
# An extension to Sidekiq message processing to track your job results.
|
5
8
|
module Sidekiq::Result
|
6
9
|
extend Storage
|
7
10
|
DEFAULT_EXPIRATION = 5 * 60 # 5 minute timeouts
|
@@ -13,6 +16,9 @@ module Sidekiq::Result
|
|
13
16
|
!check_for_key(id).empty?
|
14
17
|
end
|
15
18
|
|
19
|
+
# The result from the Sidekiq worker
|
20
|
+
# Returns whatever was returned from the Sidekiq job
|
21
|
+
# @param [String] id the id of the Sidekiq job
|
16
22
|
def result(id)
|
17
23
|
get_object_for_id(id)
|
18
24
|
end
|
@@ -1,14 +1,21 @@
|
|
1
1
|
require 'base64'
|
2
|
+
# Storage is used to wrap all Redis persistence
|
2
3
|
module Sidekiq::Result::Storage
|
3
4
|
protected
|
4
5
|
|
5
6
|
# Gets the object stored at the given key
|
7
|
+
# @param [String] id Sidekiq worker's JID
|
8
|
+
# @param [RedisPool] redis_pool the pool to use for connections to Redis
|
6
9
|
def get_object_for_id(id, redis_pool = nil)
|
7
10
|
redis_connection(redis_pool) do |conn|
|
8
11
|
decode_object_from_redis(conn.get(key(id)))
|
9
12
|
end
|
10
13
|
end
|
11
14
|
|
15
|
+
# Checks if a given key is present
|
16
|
+
# Returns an array of matching keys
|
17
|
+
# @param [String] id Sidekiq worker's JID
|
18
|
+
# @param [RedisPool] redis_pool the pool to use for connections to Redis
|
12
19
|
def check_for_key(id, redis_pool = nil)
|
13
20
|
redis_connection(redis_pool) do |conn|
|
14
21
|
keys = conn.keys(key(id))
|
@@ -16,18 +23,23 @@ module Sidekiq::Result::Storage
|
|
16
23
|
end
|
17
24
|
|
18
25
|
# Stores the given object in the specific key
|
26
|
+
# Returns true / false based on success of storage
|
27
|
+
# @param [String] id Sidekiq worker's JID, used to track jobs internally
|
28
|
+
# @param [Object] object The object that we are going to marshal and store in Redis
|
29
|
+
# @param [Integer] expiration the number of seconds to store the result in Redis
|
30
|
+
# @param [RedisPool] redis_pool the pool to use for connections to Redis
|
19
31
|
def set_object_for_id(id, object, expiration = nil, redis_pool = nil)
|
20
32
|
object = encode_object_for_redis(object)
|
21
|
-
return if object.nil?
|
33
|
+
return false if object.nil?
|
22
34
|
redis_connection(redis_pool) do |conn|
|
23
35
|
conn.setex(key(id), expiration || Sidekiq::Result::DEFAULT_EXPIRATION, object)
|
24
36
|
end
|
37
|
+
true
|
25
38
|
end
|
26
39
|
|
27
40
|
private
|
28
41
|
|
29
42
|
def encode_object_for_redis(object)
|
30
|
-
puts "About to encode: #{object}"
|
31
43
|
begin
|
32
44
|
Base64.encode64(Marshal.dump(object))
|
33
45
|
rescue
|
@@ -1,6 +1,15 @@
|
|
1
|
+
# Worker is the module included in a worker so that we know
|
2
|
+
# the user wants to track the jobs' results
|
3
|
+
#
|
4
|
+
# @!attribute expiration
|
5
|
+
# @return [Integer] How long to leave item in Redis (TTL)
|
6
|
+
|
1
7
|
module Sidekiq::Result::Worker
|
2
8
|
attr_accessor :expiration
|
3
9
|
|
10
|
+
# Internal method used to ensure user wants to track the result
|
11
|
+
# The user MUST include this module in their Worker as per the readme
|
12
|
+
# if they want to track the job results
|
4
13
|
def store_result?
|
5
14
|
true
|
6
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_result
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris MacNaughton
|
@@ -14,70 +14,70 @@ dependencies:
|
|
14
14
|
name: sidekiq
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.10'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.10'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description:
|
@@ -87,9 +87,9 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .rspec
|
92
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
93
93
|
- Gemfile
|
94
94
|
- LICENSE.txt
|
95
95
|
- README.md
|
@@ -113,17 +113,17 @@ require_paths:
|
|
113
113
|
- lib
|
114
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.4.8
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: An extension to sidekiq to retrieve the job result
|