flipper 0.20.0 → 0.21.0.rc1
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 +4 -4
- data/.github/workflows/ci.yml +57 -0
- data/Changelog.md +37 -1
- data/Gemfile +1 -0
- data/README.md +103 -47
- data/docs/Adapters.md +1 -0
- data/docs/Gates.md +74 -74
- data/docs/Optimization.md +7 -7
- data/docs/images/banner.jpg +0 -0
- data/examples/basic.rb +1 -12
- data/examples/configuring_default.rb +1 -2
- data/examples/dsl.rb +13 -24
- data/examples/enabled_for_actor.rb +8 -15
- data/examples/group.rb +3 -6
- data/examples/group_dynamic_lookup.rb +5 -19
- data/examples/group_with_members.rb +4 -14
- data/examples/importing.rb +1 -1
- data/examples/individual_actor.rb +2 -5
- data/examples/instrumentation.rb +1 -2
- data/examples/memoizing.rb +1 -2
- data/examples/percentage_of_actors.rb +6 -16
- data/examples/percentage_of_actors_enabled_check.rb +7 -10
- data/examples/percentage_of_actors_group.rb +5 -18
- data/examples/percentage_of_time.rb +3 -6
- data/lib/flipper.rb +1 -0
- data/lib/flipper/adapters/http.rb +32 -28
- data/lib/flipper/adapters/memory.rb +20 -94
- data/lib/flipper/adapters/sync/interval_synchronizer.rb +1 -1
- data/lib/flipper/configuration.rb +6 -6
- data/lib/flipper/errors.rb +2 -3
- data/lib/flipper/identifier.rb +17 -0
- data/lib/flipper/version.rb +1 -1
- data/spec/flipper/adapters/http_spec.rb +74 -8
- data/spec/flipper/adapters/memory_spec.rb +21 -1
- data/spec/flipper/configuration_spec.rb +5 -2
- data/spec/flipper/identifier_spec.rb +14 -0
- data/spec/flipper/middleware/memoizer_spec.rb +1 -1
- data/spec/flipper/middleware/setup_env_spec.rb +0 -16
- data/spec/flipper_spec.rb +0 -1
- data/spec/support/spec_helpers.rb +3 -0
- data/test/test_helper.rb +1 -0
- metadata +9 -5
- data/examples/example_setup.rb +0 -8
@@ -2,7 +2,27 @@ require 'helper'
|
|
2
2
|
require 'flipper/spec/shared_adapter_specs'
|
3
3
|
|
4
4
|
RSpec.describe Flipper::Adapters::Memory do
|
5
|
-
|
5
|
+
let(:source) { {} }
|
6
|
+
subject { described_class.new(source) }
|
6
7
|
|
7
8
|
it_should_behave_like 'a flipper adapter'
|
9
|
+
|
10
|
+
it "can initialize from big hash" do
|
11
|
+
flipper = Flipper.new(subject)
|
12
|
+
flipper.enable :subscriptions
|
13
|
+
flipper.disable :search
|
14
|
+
flipper.enable_percentage_of_actors :pro_deal, 20
|
15
|
+
flipper.enable_percentage_of_time :logging, 30
|
16
|
+
flipper.enable_actor :following, Flipper::Actor.new('1')
|
17
|
+
flipper.enable_actor :following, Flipper::Actor.new('3')
|
18
|
+
flipper.enable_group :following, Flipper::Types::Group.new(:staff)
|
19
|
+
|
20
|
+
expect(source).to eq({
|
21
|
+
"subscriptions" => subject.default_config.merge(boolean: "true"),
|
22
|
+
"search" => subject.default_config,
|
23
|
+
"logging" => subject.default_config.merge(:percentage_of_time => "30"),
|
24
|
+
"pro_deal" => subject.default_config.merge(:percentage_of_actors => "20"),
|
25
|
+
"following" => subject.default_config.merge(actors: Set["1", "3"], groups: Set["staff"]),
|
26
|
+
})
|
27
|
+
end
|
8
28
|
end
|
@@ -3,12 +3,15 @@ require 'flipper/configuration'
|
|
3
3
|
|
4
4
|
RSpec.describe Flipper::Configuration do
|
5
5
|
describe '#default' do
|
6
|
-
it '
|
7
|
-
expect
|
6
|
+
it 'returns instance using Memory adapter' do
|
7
|
+
expect(subject.default).to be_a(Flipper::DSL)
|
8
|
+
# All adapter are wrapped in Memoizable
|
9
|
+
expect(subject.default.adapter.adapter).to be_a(Flipper::Adapters::Memory)
|
8
10
|
end
|
9
11
|
|
10
12
|
it 'can be set default' do
|
11
13
|
instance = Flipper.new(Flipper::Adapters::Memory.new)
|
14
|
+
expect(subject.default).not_to be(instance)
|
12
15
|
subject.default { instance }
|
13
16
|
expect(subject.default).to be(instance)
|
14
17
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'flipper/identifier'
|
3
|
+
|
4
|
+
RSpec.describe Flipper::Identifier do
|
5
|
+
describe '#flipper_id' do
|
6
|
+
class User < Struct.new(:id)
|
7
|
+
include Flipper::Identifier
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'uses class name and id' do
|
11
|
+
expect(User.new(5).flipper_id).to eq('User;5')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -342,7 +342,7 @@ RSpec.describe Flipper::Middleware::Memoizer do
|
|
342
342
|
it 'eagerly caches known features for duration of request' do
|
343
343
|
memory = Flipper::Adapters::Memory.new
|
344
344
|
logged_memory = Flipper::Adapters::OperationLogger.new(memory)
|
345
|
-
cache = ActiveSupport::Cache::
|
345
|
+
cache = ActiveSupport::Cache::MemoryStore.new
|
346
346
|
cache.clear
|
347
347
|
cached = Flipper::Adapters::ActiveSupportCacheStore.new(logged_memory, cache, expires_in: 10)
|
348
348
|
logged_cached = Flipper::Adapters::OperationLogger.new(cached)
|
@@ -93,20 +93,4 @@ RSpec.describe Flipper::Middleware::SetupEnv do
|
|
93
93
|
expect(last_response.body).to eq(Flipper.object_id.to_s)
|
94
94
|
end
|
95
95
|
end
|
96
|
-
|
97
|
-
context 'when flipper instance or block are nil and default Flipper is NOT configured' do
|
98
|
-
let(:app) do
|
99
|
-
app = lambda do |env|
|
100
|
-
[200, { 'Content-Type' => 'text/html' }, [env['flipper'].enabled?(:search)]]
|
101
|
-
end
|
102
|
-
builder = Rack::Builder.new
|
103
|
-
builder.use described_class
|
104
|
-
builder.run app
|
105
|
-
builder
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'can use env flipper' do
|
109
|
-
expect { get '/' }.to raise_error(Flipper::DefaultNotSet)
|
110
|
-
end
|
111
|
-
end
|
112
96
|
end
|
data/spec/flipper_spec.rb
CHANGED
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.21.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -18,6 +18,7 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- ".codeclimate.yml"
|
21
|
+
- ".github/workflows/ci.yml"
|
21
22
|
- CODE_OF_CONDUCT.md
|
22
23
|
- Changelog.md
|
23
24
|
- Dockerfile
|
@@ -34,12 +35,12 @@ files:
|
|
34
35
|
- docs/Optimization.md
|
35
36
|
- docs/api/README.md
|
36
37
|
- docs/http/README.md
|
38
|
+
- docs/images/banner.jpg
|
37
39
|
- docs/read-only/README.md
|
38
40
|
- examples/basic.rb
|
39
41
|
- examples/configuring_default.rb
|
40
42
|
- examples/dsl.rb
|
41
43
|
- examples/enabled_for_actor.rb
|
42
|
-
- examples/example_setup.rb
|
43
44
|
- examples/group.rb
|
44
45
|
- examples/group_dynamic_lookup.rb
|
45
46
|
- examples/group_with_members.rb
|
@@ -81,6 +82,7 @@ files:
|
|
81
82
|
- lib/flipper/gates/group.rb
|
82
83
|
- lib/flipper/gates/percentage_of_actors.rb
|
83
84
|
- lib/flipper/gates/percentage_of_time.rb
|
85
|
+
- lib/flipper/identifier.rb
|
84
86
|
- lib/flipper/instrumentation/log_subscriber.rb
|
85
87
|
- lib/flipper/instrumentation/statsd.rb
|
86
88
|
- lib/flipper/instrumentation/statsd_subscriber.rb
|
@@ -128,6 +130,7 @@ files:
|
|
128
130
|
- spec/flipper/gates/group_spec.rb
|
129
131
|
- spec/flipper/gates/percentage_of_actors_spec.rb
|
130
132
|
- spec/flipper/gates/percentage_of_time_spec.rb
|
133
|
+
- spec/flipper/identifier_spec.rb
|
131
134
|
- spec/flipper/instrumentation/log_subscriber_spec.rb
|
132
135
|
- spec/flipper/instrumentation/statsd_subscriber_spec.rb
|
133
136
|
- spec/flipper/instrumenters/memory_spec.rb
|
@@ -168,9 +171,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
168
171
|
version: '0'
|
169
172
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
173
|
requirements:
|
171
|
-
- - "
|
174
|
+
- - ">"
|
172
175
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
176
|
+
version: 1.3.1
|
174
177
|
requirements: []
|
175
178
|
rubygems_version: 3.0.3
|
176
179
|
signing_key:
|
@@ -203,6 +206,7 @@ test_files:
|
|
203
206
|
- spec/flipper/gates/group_spec.rb
|
204
207
|
- spec/flipper/gates/percentage_of_actors_spec.rb
|
205
208
|
- spec/flipper/gates/percentage_of_time_spec.rb
|
209
|
+
- spec/flipper/identifier_spec.rb
|
206
210
|
- spec/flipper/instrumentation/log_subscriber_spec.rb
|
207
211
|
- spec/flipper/instrumentation/statsd_subscriber_spec.rb
|
208
212
|
- spec/flipper/instrumenters/memory_spec.rb
|
data/examples/example_setup.rb
DELETED