schaltroom 0.0.2 → 0.0.3

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