sqeduler 0.3.3 → 0.3.4

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