flipper-active_record 1.1.1 → 1.2.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: e7440c16ba96d1af13b04d53af4a794f2b2721ac9073f3be79399542d35f0e8b
4
- data.tar.gz: 3bf38ab6f14dcf13cfaa53e1d8cfba1622be76cbd0cbb26313c2b135d9681b64
3
+ metadata.gz: 81713d8d766224017cb63e42f5a918a061db77d9ad23f5b6ccf2b864244413c9
4
+ data.tar.gz: 4d81bac025f6d0374f6b7cfd147a6df93991635efd394b21b8aede593471ccda
5
5
  SHA512:
6
- metadata.gz: ae73ab2931ebaa6ab45e8f12d75fd16859b7c35fe83c09311b51c3dd43243106db50588dd7605f9e98a8d1611305861fcf3f082561b06dceab042d21f67e56fd
7
- data.tar.gz: 707051b6ad52cbbe0a50e817ba06d39ddb30cc42c1f7585e890d4c4f378bbd8775e519212cf38c43fe49907245c3e25da618e3644081dc5afcca3056d7b90b8b
6
+ metadata.gz: ed4dd08828325e647bff16e2696cf19810912b9c79f962742eac51789c63b262bbc268f2720d4668d6c9e39f8670494fc65d827e0b745b0b7a5c1edab184d692
7
+ data.tar.gz: c3f61cf9f06ee4eeb563927115ceb127ec2fd8484c78eb7049b71f8e53ad0456f82df4b40d415e64017a92293a8509f437d597756afd55ff1fb3ed5463eec3b1
@@ -16,7 +16,7 @@ end
16
16
  Gem::Specification.new do |gem|
17
17
  gem.authors = ['John Nunemaker']
18
18
  gem.email = 'support@flippercloud.io'
19
- gem.summary = 'ActiveRecord adapter for Flipper'
19
+ gem.summary = 'ActiveRecord feature flag adapter for Flipper'
20
20
  gem.license = 'MIT'
21
21
  gem.homepage = 'https://www.flippercloud.io/docs/adapters/active-record'
22
22
 
@@ -34,7 +34,7 @@ module Flipper
34
34
 
35
35
  VALUE_TO_TEXT_WARNING = <<-EOS
36
36
  Your database needs migrated to use the latest Flipper features.
37
- See https://github.com/flippercloud/flipper/issues/557
37
+ Run `rails generate flipper:update` and `rails db:migrate`.
38
38
  EOS
39
39
 
40
40
  # Public: Initialize a new ActiveRecord adapter instance.
@@ -278,6 +278,9 @@ module Flipper
278
278
  # See https://github.com/flippercloud/flipper/pull/692
279
279
  def value_not_text?
280
280
  @gate_class.column_for_attribute(:value).type != :text
281
+ rescue ::ActiveRecord::ActiveRecordError => error
282
+ # If the table doesn't exist, the column doesn't exist either
283
+ warn "#{error.message}. You likely need to run `rails g flipper:active_record` and/or `rails db:migrate`."
281
284
  end
282
285
 
283
286
  def with_connection(model = @feature_class, &block)
@@ -1,3 +1,13 @@
1
1
  module Flipper
2
- VERSION = '1.1.1'.freeze
2
+ VERSION = '1.2.0'.freeze
3
+
4
+ REQUIRED_RUBY_VERSION = '2.6'.freeze
5
+ NEXT_REQUIRED_RUBY_VERSION = '3.0'.freeze
6
+
7
+ REQUIRED_RAILS_VERSION = '5.2'.freeze
8
+ NEXT_REQUIRED_RAILS_VERSION = '6.1.0'.freeze
9
+
10
+ def self.deprecated_ruby_version?
11
+ Gem::Version.new(RUBY_VERSION) < Gem::Version.new(NEXT_REQUIRED_RUBY_VERSION)
12
+ end
3
13
  end
@@ -1,5 +1,5 @@
1
1
  class CreateFlipperTables < ActiveRecord::Migration<%= migration_version %>
2
- def self.up
2
+ def up
3
3
  create_table :flipper_features do |t|
4
4
  t.string :key, null: false
5
5
  t.timestamps null: false
@@ -12,10 +12,10 @@ class CreateFlipperTables < ActiveRecord::Migration<%= migration_version %>
12
12
  t.text :value
13
13
  t.timestamps null: false
14
14
  end
15
- add_index :flipper_gates, [:feature_key, :key, :value], unique: true
15
+ add_index :flipper_gates, [:feature_key, :key, :value], unique: true, length: { value: 255 }
16
16
  end
17
17
 
18
- def self.down
18
+ def down
19
19
  drop_table :flipper_gates
20
20
  drop_table :flipper_features
21
21
  end
@@ -1,193 +1,229 @@
1
- require 'flipper/adapters/active_record'
1
+ SpecHelpers.silence { require 'flipper/adapters/active_record' }
2
2
  require 'active_support/core_ext/kernel'
3
3
 
4
4
  # Turn off migration logging for specs
5
5
  ActiveRecord::Migration.verbose = false
6
+ ActiveRecord::Tasks::DatabaseTasks.root = File.dirname(__FILE__)
6
7
 
7
8
  RSpec.describe Flipper::Adapters::ActiveRecord do
8
9
  subject { described_class.new }
9
10
 
10
11
  before(:all) do
11
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3',
12
- database: ':memory:')
12
+ # Eval migration template so we can run migration against each database
13
+ migration = ERB.new(File.read(File.join(File.dirname(__FILE__), '../../../lib/generators/flipper/templates/migration.erb')))
14
+ migration_version = "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
15
+ eval migration.result(binding) # defines CreateFlipperTables
13
16
  end
14
17
 
15
- before(:each) do
16
- ActiveRecord::Base.connection.execute <<-SQL
17
- CREATE TABLE flipper_features (
18
- id integer PRIMARY KEY,
19
- key string NOT NULL UNIQUE,
20
- created_at datetime NOT NULL,
21
- updated_at datetime NOT NULL
22
- )
23
- SQL
24
-
25
- ActiveRecord::Base.connection.execute <<-SQL
26
- CREATE TABLE flipper_gates (
27
- id integer PRIMARY KEY,
28
- feature_key text NOT NULL,
29
- key string NOT NULL,
30
- value text DEFAULT NULL,
31
- created_at datetime NOT NULL,
32
- updated_at datetime NOT NULL
33
- )
34
- SQL
35
-
36
- ActiveRecord::Base.connection.execute <<-SQL
37
- CREATE UNIQUE INDEX index_gates_on_keys_and_value on flipper_gates (feature_key, key, value)
38
- SQL
39
- end
40
-
41
- after(:each) do
42
- ActiveRecord::Base.connection.execute("DROP table IF EXISTS `flipper_features`")
43
- ActiveRecord::Base.connection.execute("DROP table IF EXISTS `flipper_gates`")
44
- end
45
-
46
- it_should_behave_like 'a flipper adapter'
47
-
48
- it "should load actor ids fine" do
49
- flipper.enable_percentage_of_time(:foo, 1)
50
-
51
- ActiveRecord::Base.connection.execute <<-SQL
52
- INSERT INTO flipper_gates (feature_key, key, value, created_at, updated_at)
53
- VALUES ("foo", "actors", "Organization;4", time(), time())
54
- SQL
55
-
56
- flipper = Flipper.new(subject)
57
- flipper.preload([:foo])
58
- end
59
-
60
- context 'requiring "flipper-active_record"' do
61
- before do
62
- Flipper.configuration = nil
63
- Flipper.instance = nil
64
-
65
- silence_warnings { load 'flipper/adapters/active_record.rb' }
66
- end
67
-
68
- it 'configures itself' do
69
- expect(Flipper.adapter.adapter).to be_a(Flipper::Adapters::ActiveRecord)
70
- end
71
- end
72
-
73
- context "ActiveRecord connection_pool" do
74
- before do
75
- ActiveRecord::Base.clear_active_connections!
76
- end
77
-
78
- context "#features" do
79
- it "does not hold onto connections" do
80
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
81
- subject.features
82
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
18
+ [
19
+ {
20
+ adapter: "sqlite3",
21
+ database: ":memory:"
22
+ },
23
+
24
+ {
25
+ adapter: "mysql2",
26
+ encoding: "utf8mb4",
27
+ username: ENV["MYSQL_USER"] || "root",
28
+ password: ENV["MYSQL_PASSWORD"] || "",
29
+ database: ENV["MYSQL_DATABASE"] || "flipper_test",
30
+ port: ENV["DB_PORT"] || 3306
31
+ },
32
+
33
+ {
34
+ adapter: "postgresql",
35
+ encoding: "unicode",
36
+ host: "127.0.0.1",
37
+ username: ENV["POSTGRES_USER"] || "",
38
+ password: ENV["POSTGRES_PASSWORD"] || "",
39
+ database: ENV["POSTGRES_DATABASE"] || "flipper_test",
40
+ }
41
+ ].each do |config|
42
+ config = config.with_indifferent_access
43
+
44
+ context "with #{config[:adapter]}" do
45
+ before(:all) do
46
+ silence { ActiveRecord::Tasks::DatabaseTasks.create(config) }
83
47
  end
84
48
 
85
- it "does not release previously held connection" do
86
- ActiveRecord::Base.connection # establish a new connection
87
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
88
- subject.features
89
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
49
+ before(:each) do
50
+ skip_on_error(ActiveRecord::ConnectionNotEstablished, "#{config[:adapter]} not available") do
51
+ ActiveRecord::Base.establish_connection(config)
52
+ CreateFlipperTables.migrate(:up)
53
+ end
90
54
  end
91
- end
92
55
 
93
- context "#get_all" do
94
- it "does not hold onto connections" do
95
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
96
- subject.get_all
97
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
56
+ after(:each) do
57
+ ActiveRecord::Tasks::DatabaseTasks.purge(config)
58
+ ActiveRecord::Base.connection.close
98
59
  end
99
60
 
100
- it "does not release previously held connection" do
101
- ActiveRecord::Base.connection # establish a new connection
102
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
103
- subject.get_all
104
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
61
+ after(:all) do
62
+ silence { ActiveRecord::Tasks::DatabaseTasks.drop(config) }
105
63
  end
106
- end
107
64
 
108
- context "#add / #remove / #clear" do
109
- let(:feature) { Flipper::Feature.new(:search, subject) }
110
-
111
- it "does not hold onto connections" do
112
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
113
- subject.add(feature)
114
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
115
- subject.remove(feature)
116
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
117
- subject.clear(feature)
118
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
119
- end
65
+ it_should_behave_like 'a flipper adapter'
120
66
 
121
- it "does not release previously held connection" do
122
- ActiveRecord::Base.connection # establish a new connection
123
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
124
- subject.add(feature)
125
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
126
- subject.remove(feature)
127
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
128
- subject.clear(feature)
129
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
130
- end
131
- end
67
+ it "works when table doesn't exist" do
68
+ CreateFlipperTables.migrate(:down)
132
69
 
133
- context "#get_multi" do
134
- let(:feature) { Flipper::Feature.new(:search, subject) }
70
+ Flipper.configuration = nil
71
+ Flipper.instance = nil
135
72
 
136
- it "does not hold onto connections" do
137
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
138
- subject.get_multi([feature])
139
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
73
+ expect {
74
+ silence do
75
+ load 'flipper/adapters/active_record.rb'
76
+ Flipper::Adapters::ActiveRecord.new
77
+ end
78
+ }.not_to raise_error
140
79
  end
141
80
 
142
- it "does not release previously held connection" do
143
- ActiveRecord::Base.connection # establish a new connection
144
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
145
- subject.get_multi([feature])
146
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
147
- end
148
- end
81
+ it "should load actor ids fine" do
82
+ flipper.enable_percentage_of_time(:foo, 1)
149
83
 
150
- context "#enable/#disable boolean" do
151
- let(:feature) { Flipper::Feature.new(:search, subject) }
152
- let(:gate) { feature.gate(:boolean)}
84
+ Flipper::Adapters::ActiveRecord::Gate.create!(
85
+ feature_key: "foo",
86
+ key: "actors",
87
+ value: "Organization;4",
88
+ )
153
89
 
154
- it "does not hold onto connections" do
155
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
156
- subject.enable(feature, gate, gate.wrap(true))
157
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
158
- subject.disable(feature, gate, gate.wrap(false))
159
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
90
+ flipper = Flipper.new(subject)
91
+ flipper.preload([:foo])
160
92
  end
161
93
 
162
- it "does not release previously held connection" do
163
- ActiveRecord::Base.connection # establish a new connection
164
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
165
- subject.enable(feature, gate, gate.wrap(true))
166
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
167
- subject.disable(feature, gate, gate.wrap(false))
168
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
169
- end
170
- end
94
+ context 'requiring "flipper-active_record"' do
95
+ before do
96
+ Flipper.configuration = nil
97
+ Flipper.instance = nil
171
98
 
172
- context "#enable/#disable set" do
173
- let(:feature) { Flipper::Feature.new(:search, subject) }
174
- let(:gate) { feature.gate(:group) }
99
+ silence { load 'flipper/adapters/active_record.rb' }
100
+ end
175
101
 
176
- it "does not hold onto connections" do
177
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
178
- subject.enable(feature, gate, gate.wrap(:admin))
179
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
180
- subject.disable(feature, gate, gate.wrap(:admin))
181
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
102
+ it 'configures itself' do
103
+ expect(Flipper.adapter.adapter).to be_a(Flipper::Adapters::ActiveRecord)
104
+ end
182
105
  end
183
106
 
184
- it "does not release previously held connection" do
185
- ActiveRecord::Base.connection # establish a new connection
186
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
187
- subject.enable(feature, gate, gate.wrap(:admin))
188
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
189
- subject.disable(feature, gate, gate.wrap(:admin))
190
- expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
107
+ context "ActiveRecord connection_pool" do
108
+ before do
109
+ ActiveRecord::Base.clear_active_connections!
110
+ end
111
+
112
+ context "#features" do
113
+ it "does not hold onto connections" do
114
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
115
+ subject.features
116
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
117
+ end
118
+
119
+ it "does not release previously held connection" do
120
+ ActiveRecord::Base.connection # establish a new connection
121
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
122
+ subject.features
123
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
124
+ end
125
+ end
126
+
127
+ context "#get_all" do
128
+ it "does not hold onto connections" do
129
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
130
+ subject.get_all
131
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
132
+ end
133
+
134
+ it "does not release previously held connection" do
135
+ ActiveRecord::Base.connection # establish a new connection
136
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
137
+ subject.get_all
138
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
139
+ end
140
+ end
141
+
142
+ context "#add / #remove / #clear" do
143
+ let(:feature) { Flipper::Feature.new(:search, subject) }
144
+
145
+ it "does not hold onto connections" do
146
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
147
+ subject.add(feature)
148
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
149
+ subject.remove(feature)
150
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
151
+ subject.clear(feature)
152
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
153
+ end
154
+
155
+ it "does not release previously held connection" do
156
+ ActiveRecord::Base.connection # establish a new connection
157
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
158
+ subject.add(feature)
159
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
160
+ subject.remove(feature)
161
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
162
+ subject.clear(feature)
163
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
164
+ end
165
+ end
166
+
167
+ context "#get_multi" do
168
+ let(:feature) { Flipper::Feature.new(:search, subject) }
169
+
170
+ it "does not hold onto connections" do
171
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
172
+ subject.get_multi([feature])
173
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
174
+ end
175
+
176
+ it "does not release previously held connection" do
177
+ ActiveRecord::Base.connection # establish a new connection
178
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
179
+ subject.get_multi([feature])
180
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
181
+ end
182
+ end
183
+
184
+ context "#enable/#disable boolean" do
185
+ let(:feature) { Flipper::Feature.new(:search, subject) }
186
+ let(:gate) { feature.gate(:boolean)}
187
+
188
+ it "does not hold onto connections" do
189
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
190
+ subject.enable(feature, gate, gate.wrap(true))
191
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
192
+ subject.disable(feature, gate, gate.wrap(false))
193
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
194
+ end
195
+
196
+ it "does not release previously held connection" do
197
+ ActiveRecord::Base.connection # establish a new connection
198
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
199
+ subject.enable(feature, gate, gate.wrap(true))
200
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
201
+ subject.disable(feature, gate, gate.wrap(false))
202
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
203
+ end
204
+ end
205
+
206
+ context "#enable/#disable set" do
207
+ let(:feature) { Flipper::Feature.new(:search, subject) }
208
+ let(:gate) { feature.gate(:group) }
209
+
210
+ it "does not hold onto connections" do
211
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
212
+ subject.enable(feature, gate, gate.wrap(:admin))
213
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
214
+ subject.disable(feature, gate, gate.wrap(:admin))
215
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(false)
216
+ end
217
+
218
+ it "does not release previously held connection" do
219
+ ActiveRecord::Base.connection # establish a new connection
220
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
221
+ subject.enable(feature, gate, gate.wrap(:admin))
222
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
223
+ subject.disable(feature, gate, gate.wrap(:admin))
224
+ expect(ActiveRecord::Base.connection_handler.active_connections?).to be(true)
225
+ end
226
+ end
191
227
  end
192
228
  end
193
229
  end
@@ -47,8 +47,7 @@ class ActiveRecordTest < MiniTest::Test
47
47
  ActiveRecord::Base.table_name_prefix = :foo_
48
48
  ActiveRecord::Base.table_name_suffix = :_bar
49
49
 
50
- Flipper::Adapters::ActiveRecord.send(:remove_const, :Feature)
51
- Flipper::Adapters::ActiveRecord.send(:remove_const, :Gate)
50
+ Flipper::Adapters.send(:remove_const, :ActiveRecord)
52
51
  load("flipper/adapters/active_record.rb")
53
52
 
54
53
  assert_equal "foo_flipper_features_bar", Flipper::Adapters::ActiveRecord::Feature.table_name
@@ -58,8 +57,7 @@ class ActiveRecordTest < MiniTest::Test
58
57
  ActiveRecord::Base.table_name_prefix = ""
59
58
  ActiveRecord::Base.table_name_suffix = ""
60
59
 
61
- Flipper::Adapters::ActiveRecord.send(:remove_const, :Feature)
62
- Flipper::Adapters::ActiveRecord.send(:remove_const, :Gate)
60
+ Flipper::Adapters.send(:remove_const, :ActiveRecord)
63
61
  load("flipper/adapters/active_record.rb")
64
62
  end
65
63
  end
@@ -1,5 +1,4 @@
1
- require 'active_record'
2
- require 'rails/generators/test_case'
1
+ require 'helper'
3
2
  require 'generators/flipper/active_record_generator'
4
3
 
5
4
  class FlipperActiveRecordGeneratorTest < Rails::Generators::TestCase
@@ -16,7 +15,7 @@ class FlipperActiveRecordGeneratorTest < Rails::Generators::TestCase
16
15
  end
17
16
  assert_migration 'db/migrate/create_flipper_tables.rb', <<~MIGRATION
18
17
  class CreateFlipperTables < ActiveRecord::Migration#{migration_version}
19
- def self.up
18
+ def up
20
19
  create_table :flipper_features do |t|
21
20
  t.string :key, null: false
22
21
  t.timestamps null: false
@@ -26,13 +25,13 @@ class FlipperActiveRecordGeneratorTest < Rails::Generators::TestCase
26
25
  create_table :flipper_gates do |t|
27
26
  t.string :feature_key, null: false
28
27
  t.string :key, null: false
29
- t.string :value
28
+ t.text :value
30
29
  t.timestamps null: false
31
30
  end
32
- add_index :flipper_gates, [:feature_key, :key, :value], unique: true
31
+ add_index :flipper_gates, [:feature_key, :key, :value], unique: true, length: { value: 255 }
33
32
  end
34
33
 
35
- def self.down
34
+ def down
36
35
  drop_table :flipper_gates
37
36
  drop_table :flipper_features
38
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper-active_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.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: 2023-12-09 00:00:00.000000000 Z
11
+ date: 2024-01-11 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: 1.1.1
19
+ version: 1.2.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: 1.1.1
26
+ version: 1.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ metadata:
74
74
  homepage_uri: https://www.flippercloud.io
75
75
  source_code_uri: https://github.com/flippercloud/flipper
76
76
  bug_tracker_uri: https://github.com/flippercloud/flipper/issues
77
- changelog_uri: https://github.com/flippercloud/flipper/blob/main/Changelog.md
77
+ changelog_uri: https://github.com/flippercloud/flipper/releases/tag/v1.2.0
78
78
  post_install_message:
79
79
  rdoc_options: []
80
80
  require_paths:
@@ -90,10 +90,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  requirements: []
93
- rubygems_version: 3.4.10
93
+ rubygems_version: 3.5.3
94
94
  signing_key:
95
95
  specification_version: 4
96
- summary: ActiveRecord adapter for Flipper
96
+ summary: ActiveRecord feature flag adapter for Flipper
97
97
  test_files:
98
98
  - spec/flipper/adapters/active_record_spec.rb
99
99
  - test/adapters/active_record_test.rb