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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0cbfe2e593749e31e54730fe24a087470245b57c51b65ce7b35bd64cde93701
4
- data.tar.gz: 1fc5512869188eb0bd3ad7aaf334830671a91903ecdf4b8902b674bc45842d4e
3
+ metadata.gz: 605aa34e1e3073382b2f5245ac851d3d31a18932afeb15778333ef4c34c47b2b
4
+ data.tar.gz: 1a70c8a9004f4cd4ec047ea8c8cbe00201e48a47444a5034cf3adcc94a3cba2f
5
5
  SHA512:
6
- metadata.gz: dc97442198b78eb59e201b87a22311370d92e7ca9b6938513f2760872a187fd131ffbd12ee9ce6fb7ea2470a8fc934c21dd31a5ef961bf76615ddaa1a58ec93f
7
- data.tar.gz: d4a34ad1cfc7d502be3b609f65b36549907b8735d4cea43022e80704f030ca9e5e05638246b76066d1489f4fe321052731f4ad66c93cdf50857d18c64d4ecb4d
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
@@ -8,7 +8,7 @@ module Schaltroom
8
8
  module VERSION
9
9
  MAJOR = 0
10
10
  MINOR = 0
11
- TINY = 1
11
+ TINY = 3
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
14
14
  end
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.2
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-10-13 00:00:00.000000000 Z
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.17.3
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.17.3
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