flipper-sequel 0.20.3 → 0.22.0

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: 6400cc7ad23887096836e1d2f2410c27039a27dddadf14e995e7e6a1fecd8640
4
- data.tar.gz: 51ffaac5e39b73ba34a170fe7e088437f780771397a6b3fb81e2c4cef176e9f5
3
+ metadata.gz: 5ed17230bf73572a1eb0d6e9d517e0a01a459f73a50ec0058f6977ad92c1e78a
4
+ data.tar.gz: 0d372c287dbc20dc98558544165bc1b96c9cc553ace717be21157d991372a005
5
5
  SHA512:
6
- metadata.gz: 6b081d939a00fbba91e54ef4727416bd0c35fcb38c30a283925bbf7f3a3d8f5d31be290f3fdc78c69d92316a5ff937e4a0cd155bb5e4d9b2e84528ae5bfe193e
7
- data.tar.gz: 58270f24e182c423e700e241d774bf2e5e09fff101db68405e2e0fbfd97c87a4e5857f64b11097c7ba93620bfdbe5e2502ec0a48ea8307433f6e136174555c88
6
+ metadata.gz: 4d4eb797141a7130d78f74b6b6daa2958f5216205f94da3660e65ae4c6d51aa20f6cbbcf46b65f20aa4c7349a9cf59938423ce1b116a4c24b17c8e43a768cdd9
7
+ data.tar.gz: a94221243cdbf03ccf2f6d4bf3ec550921e6f15e06700005972f392ae25ff466876ecb5f9b079b9941bea70d64a1d53a5d22073f6a5be7118327ac12027ba08d
@@ -25,13 +25,18 @@ require 'generators/flipper/templates/sequel_migration'
25
25
  CreateFlipperTablesSequel.new(Sequel::Model.db).up
26
26
  ```
27
27
 
28
- Once you have created and executed the migration, you can use the sequel adapter like so:
28
+ Once you have created and executed the migration, you can use the sequel adapter by simply requiring it:
29
29
 
30
30
  ```ruby
31
- require 'flipper/adapters/sequel'
32
- adapter = Flipper::Adapters::Sequel.new
33
- flipper = Flipper.new(adapter)
34
- # profit...
31
+ require 'flipper-sequel`
32
+ ```
33
+
34
+ **If you need to customize the adapter**, you can add this to an initializer:
35
+
36
+ ```ruby
37
+ Flipper.configure do |config|
38
+ config.adapter { Flipper::Adapters::Sequel.new }
39
+ end
35
40
  ```
36
41
 
37
42
  ## Internals
@@ -1,10 +1,4 @@
1
- require 'pathname'
2
- require 'logger'
3
-
4
- root_path = Pathname(__FILE__).dirname.join('..').expand_path
5
- lib_path = root_path.join('lib')
6
- $:.unshift(lib_path)
7
-
1
+ require 'bundler/setup'
8
2
  require 'sequel'
9
3
  Sequel::Model.db = Sequel.sqlite(':memory:')
10
4
  Sequel.extension :migration, :core_extensions
@@ -13,20 +7,18 @@ require 'generators/flipper/templates/sequel_migration'
13
7
  CreateFlipperTablesSequel.new(Sequel::Model.db).up
14
8
 
15
9
  require 'flipper/adapters/sequel'
16
- adapter = Flipper::Adapters::Sequel.new
17
- flipper = Flipper.new(adapter)
18
10
 
19
- flipper[:stats].enable
11
+ Flipper[:stats].enable
20
12
 
21
- if flipper[:stats].enabled?
13
+ if Flipper[:stats].enabled?
22
14
  puts "Enabled!"
23
15
  else
24
16
  puts "Disabled!"
25
17
  end
26
18
 
27
- flipper[:stats].disable
19
+ Flipper[:stats].disable
28
20
 
29
- if flipper[:stats].enabled?
21
+ if Flipper[:stats].enabled?
30
22
  puts "Enabled!"
31
23
  else
32
24
  puts "Disabled!"
@@ -1,11 +1,4 @@
1
- require 'pp'
2
- require 'pathname'
3
- require 'logger'
4
-
5
- root_path = Pathname(__FILE__).dirname.join('..').expand_path
6
- lib_path = root_path.join('lib')
7
- $:.unshift(lib_path)
8
-
1
+ require 'bundler/setup'
9
2
  require 'sequel'
10
3
  Sequel::Model.db = Sequel.sqlite(':memory:')
11
4
  Sequel.extension :migration, :core_extensions
@@ -14,8 +7,6 @@ require 'generators/flipper/templates/sequel_migration'
14
7
  CreateFlipperTablesSequel.new(Sequel::Model.db).up
15
8
 
16
9
  require 'flipper/adapters/sequel'
17
- adapter = Flipper::Adapters::Sequel.new
18
- flipper = Flipper.new(adapter)
19
10
 
20
11
  # Register a few groups.
21
12
  Flipper.register(:admins) { |thing| thing.admin? }
@@ -24,16 +15,16 @@ Flipper.register(:early_access) { |thing| thing.early_access? }
24
15
  # Create a user class that has flipper_id instance method.
25
16
  User = Struct.new(:flipper_id)
26
17
 
27
- flipper[:stats].enable
28
- flipper[:stats].enable_group :admins
29
- flipper[:stats].enable_group :early_access
30
- flipper[:stats].enable_actor User.new('25')
31
- flipper[:stats].enable_actor User.new('90')
32
- flipper[:stats].enable_actor User.new('180')
33
- flipper[:stats].enable_percentage_of_time 15
34
- flipper[:stats].enable_percentage_of_actors 45
18
+ Flipper[:stats].enable
19
+ Flipper[:stats].enable_group :admins
20
+ Flipper[:stats].enable_group :early_access
21
+ Flipper[:stats].enable_actor User.new('25')
22
+ Flipper[:stats].enable_actor User.new('90')
23
+ Flipper[:stats].enable_actor User.new('180')
24
+ Flipper[:stats].enable_percentage_of_time 15
25
+ Flipper[:stats].enable_percentage_of_actors 45
35
26
 
36
- flipper[:search].enable
27
+ Flipper[:search].enable
37
28
 
38
29
  puts 'all rows in features table'
39
30
  pp Flipper::Adapters::Sequel::Feature.all
@@ -55,7 +46,7 @@ pp Flipper::Adapters::Sequel::Gate.all
55
46
  puts
56
47
 
57
48
  puts 'flipper get of feature'
58
- pp adapter.get(flipper[:stats])
49
+ pp Flipper.adapter.get(Flipper[:stats])
59
50
  # {:boolean=>"true",
60
51
  # :groups=>#<Set: {"admins", "early_access"}>,
61
52
  # :actors=>#<Set: {"180", "25", "90"}>,
@@ -97,11 +97,15 @@ module Flipper
97
97
  end
98
98
 
99
99
  def get_all
100
- db_gates = @gate_class.fetch(<<-SQL).to_a
101
- SELECT ff.key AS feature_key, fg.key, fg.value
102
- FROM #{@feature_class.table_name} ff
103
- LEFT JOIN #{@gate_class.table_name} fg ON ff.key = fg.feature_key
104
- SQL
100
+ feature_table = @feature_class.table_name.to_sym
101
+ gate_table = @gate_class.table_name.to_sym
102
+ features_sql = @feature_class.select(:key.qualify(feature_table).as(:feature_key))
103
+ .select_append(:key.qualify(gate_table))
104
+ .select_append(:value.qualify(gate_table))
105
+ .left_join(@gate_class.table_name.to_sym, feature_key: :key)
106
+ .sql
107
+
108
+ db_gates = @gate_class.fetch(features_sql).to_a
105
109
  grouped_db_gates = db_gates.group_by(&:feature_key)
106
110
  result = Hash.new { |hash, key| hash[key] = default_config }
107
111
  features = grouped_db_gates.keys.map { |key| Flipper::Feature.new(key, self) }
@@ -210,3 +214,9 @@ module Flipper
210
214
  end
211
215
  end
212
216
  end
217
+
218
+ Flipper.configure do |config|
219
+ config.adapter { Flipper::Adapters::Sequel.new }
220
+ end
221
+
222
+ Sequel::Model.include Flipper::Identifier
@@ -1,3 +1,3 @@
1
1
  module Flipper
2
- VERSION = '0.20.3'.freeze
2
+ VERSION = '0.22.0'.freeze
3
3
  end
@@ -28,4 +28,21 @@ RSpec.describe Flipper::Adapters::Sequel do
28
28
  end
29
29
 
30
30
  it_should_behave_like 'a flipper adapter'
31
+
32
+ context 'requiring "flipper-sequel"' do
33
+ before do
34
+ Flipper.configuration = nil
35
+ Flipper.instance = nil
36
+
37
+ load 'flipper/adapters/sequel.rb'
38
+ end
39
+
40
+ it 'configures itself' do
41
+ expect(Flipper.adapter.adapter).to be_a(Flipper::Adapters::Sequel)
42
+ end
43
+
44
+ it "defines #flipper_id on Sequel::Model" do
45
+ expect(Sequel::Model.ancestors).to include(Flipper::Identifier)
46
+ end
47
+ end
31
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.3
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-10 00:00:00.000000000 Z
11
+ date: 2021-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flipper
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.20.3
19
+ version: 0.22.0
20
20
  type: :runtime
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: 0.20.3
26
+ version: 0.22.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sequel
29
29
  requirement: !ruby/object:Gem::Requirement