sqeduler 0.3.3 → 0.3.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: 285c8e84ead9c7c09c993c9dd758dde10dd1e9f1
4
- data.tar.gz: 3fa620e267de5111437ed61a7993ea9e6ce9f248
3
+ metadata.gz: 18fa6822b0e491d4c9b06051fefc1658c8a90073
4
+ data.tar.gz: d25bf091049ddb0190d607eb7d72e19b8bff6a98
5
5
  SHA512:
6
- metadata.gz: 18bed5ddc6ea2b8f34a5dd5817c49c9841912307a0dfe4e864dfae796e561a4e5e571132a20f4344ac8c049164795aa601b76dfe81232486c6801137d5a65825
7
- data.tar.gz: 1fcfd239f05867d25212d83ba47c0fb28794d28799ffed3b7c4dafecca225af13c48373f321ad536424b1f73b45d69ed2609764bf9020b8f438ec5385c7e0558
6
+ metadata.gz: 77f216253e1b98d9a27a1af2a4d364a8d8a69bf4e5f6a59911ebac5c8589a24f22e80a85f99a3ed3459427ffebcc258b4d983d764b614ba5e1fb3b32b3e1679b
7
+ data.tar.gz: a514c7e379d85750fcec035daf74dab2fc32a23d0829502d09952a423cb0725264804737ff4e6c3d3a917112f0215983b4b210b7630db34310d7c375df32a8b8
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 0.3.4 / 2016-03-28
2
+
3
+ * Add ability to use a client-provided connection pool rather than creating one
4
+
1
5
  ### 0.3.3 / 2016-03-25
2
6
 
3
7
  * Fixed lock refresher not calling `redis_pool` properly so it wouldn't actually run
@@ -5,7 +9,7 @@
5
9
  ### 0.3.2 / 2016-03-10
6
10
 
7
11
  * Fixed lock refresher failing to lock properly for exclusive runs
8
- * Added debug logs for lock refresher
12
+ * Added debug logs for lock refresher
9
13
 
10
14
  ### 0.3.1 / 2016-02-17
11
15
 
data/README.md CHANGED
@@ -55,6 +55,8 @@ Sqeduler::Service.config = config
55
55
  Sqeduler::Service.start
56
56
  ```
57
57
 
58
+ You can also pass in your own `ConnectionPool` instance as `config.redis_pool` rather than providing configuration in `redis_hash`. If you do so, it's recommended to use a `Redis::Namespace` so that the keys sqeduler sets are namespaced uniquely.
59
+
58
60
  See documentation for [Sidekiq::Scheduler](https://github.com/Moove-it/sidekiq-scheduler#scheduled-jobs-recurring-jobs)
59
61
  for specifics on how to construct your schedule YAML file.
60
62
 
@@ -2,11 +2,12 @@
2
2
  module Sqeduler
3
3
  # Simple config for Sqeduler::Service
4
4
  class Config
5
- attr_accessor :logger, :redis_hash, :schedule_path,
5
+ attr_accessor :logger, :redis_hash, :redis_pool, :schedule_path,
6
6
  :on_server_start, :on_client_start, :maintain_locks
7
7
 
8
8
  def initialize(opts = {})
9
9
  self.redis_hash = opts[:redis_hash]
10
+ self.redis_pool = opts[:redis_pool]
10
11
  self.schedule_path = opts[:schedule_path]
11
12
  self.on_server_start = opts[:on_server_start]
12
13
  self.on_client_start = opts[:on_client_start]
@@ -95,12 +95,18 @@ module Sqeduler
95
95
  # separate from Sidekiq's so that we don't saturate the client and server connection
96
96
  # pools.
97
97
  def redis_pool
98
- @redis_pool ||= begin
98
+ @redis_pool ||= config_redis_pool
99
+ end
100
+
101
+ def config_redis_pool
102
+ redis_pool = if config.redis_pool
103
+ config.redis_pool
104
+ else
99
105
  redis = { :namespace => "sqeduler" }.merge(config.redis_hash)
100
- ::Sidekiq::RedisConnection.create(redis).tap do |redis_pool|
101
- verify_redis_pool(redis_pool)
102
- end
106
+ ::Sidekiq::RedisConnection.create(redis)
103
107
  end
108
+ verify_redis_pool(redis_pool)
109
+ redis_pool
104
110
  end
105
111
 
106
112
  def logger
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Sqeduler
3
- VERSION = "0.3.3".freeze
3
+ VERSION = "0.3.4".freeze
4
4
  end
data/spec/service_spec.rb CHANGED
@@ -6,6 +6,12 @@ RSpec.describe Sqeduler::Service do
6
6
  Logger.new(STDOUT).tap { |l| l.level = Logger::DEBUG }
7
7
  end
8
8
 
9
+ before do
10
+ described_class.instance_variables.each do |ivar|
11
+ described_class.remove_instance_variable(ivar)
12
+ end
13
+ end
14
+
9
15
  describe ".start" do
10
16
  subject { described_class.start }
11
17
 
@@ -106,6 +112,32 @@ RSpec.describe Sqeduler::Service do
106
112
  end
107
113
  end
108
114
 
115
+ context "with pool provided in config" do
116
+ let(:original_pool) do
117
+ ConnectionPool.new(:size => 10, :timeout => 0.1) do
118
+ Redis::Namespace.new("sqeduler", :client => Redis.new(REDIS_CONFIG))
119
+ end
120
+ end
121
+
122
+ before do
123
+ described_class.config = Sqeduler::Config.new.tap do |config|
124
+ config.redis_pool = original_pool
125
+ config.logger = logger
126
+ end
127
+ end
128
+
129
+ it "doesn't create a connection pool" do
130
+ expect(subject.object_id).to eq(original_pool.object_id)
131
+ end
132
+
133
+ it "checks redis version" do
134
+ allow_any_instance_of(Redis).to receive(:info).and_return(
135
+ "redis_version" => "2.6.11"
136
+ )
137
+ expect { subject }.to raise_error
138
+ end
139
+ end
140
+
109
141
  it "creates a connection pool" do
110
142
  expect(subject).to be_kind_of(ConnectionPool)
111
143
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqeduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jared Jenkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-25 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq