File tree Expand file tree Collapse file tree 9 files changed +54
-25
lines changed Expand file tree Collapse file tree 9 files changed +54
-25
lines changed Original file line number Diff line number Diff line change 1+ 0.1.4
2+
3+ - Allow Redis to config host url.
4+ - Update service options API in configure.
5+
160.1.3
27-----
38
Original file line number Diff line number Diff line change @@ -52,6 +52,8 @@ StatusPage.configure do
5252 self .use :database
5353 self .use :cache
5454 self .use :redis
55+ # Custom redis url
56+ self .use :redis , url: ' redis://you-redis-host:3306/1'
5557 self .use :sidekiq
5658end
5759```
Original file line number Diff line number Diff line change @@ -8,9 +8,15 @@ def initialize
88 @interval = 10
99 end
1010
11- def use ( service_name )
11+ def use ( service_name , opts = { } )
1212 require "status-page/services/#{ service_name } "
13- add_service ( "StatusPage::Services::#{ service_name . capitalize } " . constantize )
13+ klass = "StatusPage::Services::#{ service_name . capitalize } " . constantize
14+ if klass . respond_to? ( :configurable? ) && klass . configurable?
15+ opts . each_key do |key |
16+ klass . config . send ( "#{ key } =" , opts [ key ] )
17+ end
18+ end
19+ add_service ( klass )
1420 end
1521
1622 def add_custom_service ( custom_service_class )
Original file line number Diff line number Diff line change @@ -2,31 +2,29 @@ module StatusPage
22 module Services
33 class Base
44 attr_reader :request
5- cattr_accessor :config
6-
7- def self . service_name
8- @name ||= name . demodulize
9- end
10-
11- def self . configure
12- return unless configurable?
13-
14- self . config ||= config_class . new
15-
16- yield self . config if block_given?
17- end
185
196 def initialize ( request : nil )
207 @request = request
8+ end
219
22- self . class . configure
10+ def self . service_name
11+ @name ||= name . demodulize
2312 end
2413
2514 # @abstract
2615 def check!
2716 raise NotImplementedError
2817 end
2918
19+ def self . config
20+ return nil if !self . configurable?
21+ @config ||= config_class . new
22+ end
23+
24+ def config
25+ self . class . config
26+ end
27+
3028 def self . configurable?
3129 config_class
3230 end
Original file line number Diff line number Diff line change @@ -5,18 +5,32 @@ module Services
55 class RedisException < StandardError ; end
66
77 class Redis < Base
8+ class Configuration
9+ attr_accessor :url
10+
11+ def initialize
12+ @url = "redis://127.0.0.1:3306/1"
13+ end
14+ end
15+
16+ class << self
17+ def config_class
18+ Redis ::Configuration
19+ end
20+ end
21+
822 def check!
923 time = Time . now . to_s ( :db )
1024
11- redis = ::Redis . current
25+ redis = ::Redis . new ( url : config . url )
1226 redis . set ( key , time )
1327 fetched = redis . get ( key )
1428
1529 raise "different values (now: #{ time } , fetched: #{ fetched } )" if fetched != time
1630 rescue Exception => e
1731 raise RedisException . new ( e . message )
1832 ensure
19- redis . client . disconnect
33+ redis . disconnect
2034 end
2135
2236 private
Original file line number Diff line number Diff line change @@ -29,7 +29,7 @@ class << self
2929 private
3030
3131 def config_class
32- Configuration
32+ Sidekiq :: Configuration
3333 end
3434 end
3535
@@ -44,7 +44,6 @@ def check_latency!
4444 latency = ::Sidekiq ::Queue . new . latency
4545
4646 return unless latency > config . latency
47-
4847 raise "latency #{ latency } is greater than #{ config . latency } "
4948 end
5049
Original file line number Diff line number Diff line change 2727 end
2828 end
2929
30+ describe 'use with opts' do
31+ it 'should use redis with opts' do
32+ subject . use ( :redis , url : 'redis://asdgas:3380' )
33+ expect ( StatusPage ::Services ::Redis . config . url ) . to eq 'redis://asdgas:3380'
34+ end
35+ end
36+
3037 describe '#add_custom_service' do
3138 before do
3239 subject . instance_variable_set ( '@providers' , Set . new )
Original file line number Diff line number Diff line change 2828 end
2929
3030 describe '#configurable?' do
31- it { expect ( described_class ) . not_to be_configurable }
31+ it { expect ( described_class ) . to be_configurable }
3232 end
3333
3434 describe '#key' do
Original file line number Diff line number Diff line change 33describe StatusPage ::Services ::Sidekiq do
44 describe StatusPage ::Services ::Sidekiq ::Configuration do
55 describe 'defaults' do
6- it { expect ( described_class . new . latency ) . to eq ( StatusPage :: Services :: Sidekiq :: Configuration :: DEFAULT_LATENCY_TIMEOUT ) }
6+ it { expect ( described_class . new . latency ) . to eq ( 30 ) }
77 end
88 end
99
7777 latency = 123
7878
7979 expect {
80- described_class . configure do |config |
81- config . latency = latency
82- end
80+ described_class . config . latency = latency
8381 } . to change { described_class . config . latency } . to ( latency )
8482 end
8583 end
You can’t perform that action at this time.
0 commit comments