schaltroom 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/schaltroom.rb +31 -9
- data/lib/schaltroom/feature.rb +30 -0
- data/lib/schaltroom/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 605aa34e1e3073382b2f5245ac851d3d31a18932afeb15778333ef4c34c47b2b
|
4
|
+
data.tar.gz: 1a70c8a9004f4cd4ec047ea8c8cbe00201e48a47444a5034cf3adcc94a3cba2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be7e7e6efb8c06a87af99f0856aefb0c6ea419162962e71f8ed6ca99fe2f8c60676d4e5ac68e72ba956c399f7383aef4c4ae5513220c25ca1063bd17733a36c5
|
7
|
+
data.tar.gz: b66f29805249101a911a5133de3f74571f1ccbd701ce69735eb8006a91646e98be501e0f595d032af3ee0a26a8c0c341d9c729a148154b29f4cad75b7558b8d0
|
data/lib/schaltroom.rb
CHANGED
@@ -26,6 +26,17 @@ module Schaltroom
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
def self.[](item)
|
30
|
+
handle_caller(caller, __method__, item)
|
31
|
+
feature = Schaltroom.find_feature(item)
|
32
|
+
raise ArgumentError, "Feature: #{item} is unknown. Please add it to your Schaltroom.config" if feature.nil?
|
33
|
+
if feature[:type] == :boolean
|
34
|
+
return feature[:value]
|
35
|
+
else
|
36
|
+
Feature.new(feature)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
29
40
|
def self.repository
|
30
41
|
if block_given?
|
31
42
|
yield @repository
|
@@ -60,48 +71,59 @@ module Schaltroom
|
|
60
71
|
end
|
61
72
|
|
62
73
|
def self.active?(name)
|
63
|
-
handle_caller(caller, __method__)
|
74
|
+
handle_caller(caller, __method__, name)
|
64
75
|
feature = find_feature(name)
|
65
76
|
return false unless feature
|
66
77
|
feature[:value]
|
67
78
|
end
|
68
79
|
|
69
80
|
def self.inactive?(name)
|
70
|
-
handle_caller(caller, __method__)
|
81
|
+
handle_caller(caller, __method__, name)
|
71
82
|
!active?(name)
|
72
83
|
end
|
73
84
|
|
74
85
|
def self.active_since?(name, version)
|
75
|
-
handle_caller(caller, __method__)
|
86
|
+
handle_caller(caller, __method__, name)
|
76
87
|
Gem::Version.new(version) <= Gem::Version.new(find_feature(name)[:value])
|
77
88
|
end
|
78
89
|
|
79
90
|
def self.inactive_since?(name, version)
|
80
|
-
handle_caller(caller, __method__)
|
91
|
+
handle_caller(caller, __method__, name)
|
81
92
|
Gem::Version.new(version) > Gem::Version.new(find_feature(name)[:value])
|
82
93
|
end
|
83
94
|
|
84
95
|
def self.active_before?(name, version)
|
85
|
-
handle_caller(caller, __method__)
|
96
|
+
handle_caller(caller, __method__, name)
|
86
97
|
Gem::Version.new(version) > Gem::Version.new(find_feature(name)[:value])
|
87
98
|
end
|
88
99
|
|
89
100
|
def self.inactive_before?(name, version)
|
90
|
-
handle_caller(caller, __method__)
|
101
|
+
handle_caller(caller, __method__, name)
|
91
102
|
Gem::Version.new(version) <= Gem::Version.new(find_feature(name)[:value])
|
92
103
|
end
|
93
104
|
|
94
105
|
def self.active_between?(name, first_version, last_version)
|
95
|
-
handle_caller(caller, __method__)
|
106
|
+
handle_caller(caller, __method__, name)
|
96
107
|
Gem::Version.new(first_version) <= Gem::Version.new(find_feature(name)[:value]) && Gem::Version.new(last_version) >= Gem::Version.new(find_feature(name)[:value])
|
97
108
|
end
|
98
109
|
|
99
|
-
def self.handle_caller(caller_stack, method)
|
110
|
+
def self.handle_caller(caller_stack, method, feature_name)
|
100
111
|
return unless @config.monitoring == :enabled
|
101
112
|
|
102
|
-
@calls << { method: method.to_sym, caller: caller_stack[0] }
|
113
|
+
@calls << { feature_name: feature_name, method: method.to_sym, caller: caller_stack[0] }
|
103
114
|
@calls = @calls.uniq
|
104
115
|
end
|
116
|
+
|
117
|
+
def self.with_config_and_repository(config, repository)
|
118
|
+
return unless block_given?
|
119
|
+
current_config = @config
|
120
|
+
current_repository = @repository
|
121
|
+
@config = config
|
122
|
+
@repository = @repository.merge(repository)
|
123
|
+
yield
|
124
|
+
@config = current_config
|
125
|
+
@repository = current_repository
|
126
|
+
end
|
105
127
|
end
|
106
128
|
|
107
129
|
loader.eager_load
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Schaltroom
|
4
|
+
# configuration class for Schaltroom
|
5
|
+
class Feature
|
6
|
+
def initialize(feature)
|
7
|
+
@value = feature[:value]
|
8
|
+
end
|
9
|
+
|
10
|
+
define_method :>= do |str|
|
11
|
+
Gem::Version.new(@value) >= Gem::Version.new(str)
|
12
|
+
end
|
13
|
+
|
14
|
+
define_method :> do |str|
|
15
|
+
Gem::Version.new(@value) > Gem::Version.new(str)
|
16
|
+
end
|
17
|
+
|
18
|
+
define_method :== do |str|
|
19
|
+
Gem::Version.new(@value) == Gem::Version.new(str)
|
20
|
+
end
|
21
|
+
|
22
|
+
define_method :< do |str|
|
23
|
+
Gem::Version.new(@value) < Gem::Version.new(str)
|
24
|
+
end
|
25
|
+
|
26
|
+
define_method '<='.to_sym do |str|
|
27
|
+
Gem::Version.new(@value) <= Gem::Version.new(str)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/schaltroom/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schaltroom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Erler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.16'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,7 @@ extra_rdoc_files: []
|
|
122
122
|
files:
|
123
123
|
- lib/schaltroom.rb
|
124
124
|
- lib/schaltroom/config.rb
|
125
|
+
- lib/schaltroom/feature.rb
|
125
126
|
- lib/schaltroom/repository.rb
|
126
127
|
- lib/schaltroom/version.rb
|
127
128
|
homepage: https://rubygems.org/gems/schaltroom
|