flipper 1.0.0 → 1.3.6

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.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/ci.yml +50 -7
  4. data/.github/workflows/examples.yml +50 -8
  5. data/CLAUDE.md +74 -0
  6. data/Changelog.md +1 -584
  7. data/Gemfile +15 -8
  8. data/README.md +31 -27
  9. data/Rakefile +2 -2
  10. data/benchmark/typecast_ips.rb +8 -0
  11. data/docs/images/banner.jpg +0 -0
  12. data/docs/images/flipper_cloud.png +0 -0
  13. data/examples/cloud/backoff_policy.rb +13 -0
  14. data/examples/cloud/cloud_setup.rb +16 -0
  15. data/examples/cloud/forked.rb +7 -2
  16. data/examples/cloud/threaded.rb +15 -18
  17. data/examples/expressions.rb +213 -0
  18. data/examples/strict.rb +18 -0
  19. data/exe/flipper +5 -0
  20. data/flipper.gemspec +6 -3
  21. data/lib/flipper/actor.rb +6 -3
  22. data/lib/flipper/adapter.rb +10 -0
  23. data/lib/flipper/adapter_builder.rb +44 -0
  24. data/lib/flipper/adapters/actor_limit.rb +28 -0
  25. data/lib/flipper/adapters/cache_base.rb +143 -0
  26. data/lib/flipper/adapters/dual_write.rb +1 -3
  27. data/lib/flipper/adapters/failover.rb +0 -4
  28. data/lib/flipper/adapters/failsafe.rb +0 -4
  29. data/lib/flipper/adapters/http/client.rb +40 -12
  30. data/lib/flipper/adapters/http/error.rb +2 -2
  31. data/lib/flipper/adapters/http.rb +19 -14
  32. data/lib/flipper/adapters/instrumented.rb +0 -4
  33. data/lib/flipper/adapters/memoizable.rb +14 -19
  34. data/lib/flipper/adapters/memory.rb +4 -6
  35. data/lib/flipper/adapters/operation_logger.rb +18 -92
  36. data/lib/flipper/adapters/poll.rb +16 -3
  37. data/lib/flipper/adapters/pstore.rb +17 -11
  38. data/lib/flipper/adapters/read_only.rb +8 -41
  39. data/lib/flipper/adapters/strict.rb +45 -0
  40. data/lib/flipper/adapters/sync/feature_synchronizer.rb +10 -1
  41. data/lib/flipper/adapters/sync.rb +0 -4
  42. data/lib/flipper/adapters/wrapper.rb +54 -0
  43. data/lib/flipper/cli.rb +263 -0
  44. data/lib/flipper/cloud/configuration.rb +131 -54
  45. data/lib/flipper/cloud/middleware.rb +5 -5
  46. data/lib/flipper/cloud/telemetry/backoff_policy.rb +96 -0
  47. data/lib/flipper/cloud/telemetry/instrumenter.rb +22 -0
  48. data/lib/flipper/cloud/telemetry/metric.rb +39 -0
  49. data/lib/flipper/cloud/telemetry/metric_storage.rb +30 -0
  50. data/lib/flipper/cloud/telemetry/submitter.rb +100 -0
  51. data/lib/flipper/cloud/telemetry.rb +191 -0
  52. data/lib/flipper/cloud.rb +1 -1
  53. data/lib/flipper/configuration.rb +25 -4
  54. data/lib/flipper/dsl.rb +51 -0
  55. data/lib/flipper/engine.rb +42 -3
  56. data/lib/flipper/export.rb +0 -2
  57. data/lib/flipper/exporters/json/export.rb +1 -1
  58. data/lib/flipper/exporters/json/v1.rb +1 -1
  59. data/lib/flipper/expression/builder.rb +73 -0
  60. data/lib/flipper/expression/constant.rb +25 -0
  61. data/lib/flipper/expression.rb +71 -0
  62. data/lib/flipper/expressions/all.rb +9 -0
  63. data/lib/flipper/expressions/any.rb +9 -0
  64. data/lib/flipper/expressions/boolean.rb +9 -0
  65. data/lib/flipper/expressions/comparable.rb +13 -0
  66. data/lib/flipper/expressions/duration.rb +28 -0
  67. data/lib/flipper/expressions/equal.rb +9 -0
  68. data/lib/flipper/expressions/greater_than.rb +9 -0
  69. data/lib/flipper/expressions/greater_than_or_equal_to.rb +9 -0
  70. data/lib/flipper/expressions/less_than.rb +9 -0
  71. data/lib/flipper/expressions/less_than_or_equal_to.rb +9 -0
  72. data/lib/flipper/expressions/not_equal.rb +9 -0
  73. data/lib/flipper/expressions/now.rb +9 -0
  74. data/lib/flipper/expressions/number.rb +9 -0
  75. data/lib/flipper/expressions/percentage.rb +9 -0
  76. data/lib/flipper/expressions/percentage_of_actors.rb +12 -0
  77. data/lib/flipper/expressions/property.rb +9 -0
  78. data/lib/flipper/expressions/random.rb +9 -0
  79. data/lib/flipper/expressions/string.rb +9 -0
  80. data/lib/flipper/expressions/time.rb +9 -0
  81. data/lib/flipper/feature.rb +63 -1
  82. data/lib/flipper/gate.rb +2 -1
  83. data/lib/flipper/gate_values.rb +5 -2
  84. data/lib/flipper/gates/expression.rb +75 -0
  85. data/lib/flipper/instrumentation/log_subscriber.rb +13 -5
  86. data/lib/flipper/instrumentation/statsd.rb +4 -2
  87. data/lib/flipper/instrumentation/statsd_subscriber.rb +2 -4
  88. data/lib/flipper/instrumentation/subscriber.rb +0 -4
  89. data/lib/flipper/metadata.rb +4 -1
  90. data/lib/flipper/middleware/memoizer.rb +29 -13
  91. data/lib/flipper/model/active_record.rb +23 -0
  92. data/lib/flipper/poller.rb +9 -8
  93. data/lib/flipper/serializers/gzip.rb +22 -0
  94. data/lib/flipper/serializers/json.rb +17 -0
  95. data/lib/flipper/spec/shared_adapter_specs.rb +46 -27
  96. data/lib/flipper/test/shared_adapter_test.rb +41 -22
  97. data/lib/flipper/test_help.rb +43 -0
  98. data/lib/flipper/typecast.rb +37 -9
  99. data/lib/flipper/types/percentage.rb +1 -1
  100. data/lib/flipper/version.rb +11 -1
  101. data/lib/flipper.rb +41 -2
  102. data/lib/generators/flipper/setup_generator.rb +68 -0
  103. data/lib/generators/flipper/templates/initializer.rb +45 -0
  104. data/lib/generators/flipper/templates/update/migrations/01_create_flipper_tables.rb.erb +22 -0
  105. data/lib/generators/flipper/templates/update/migrations/02_change_flipper_gates_value_to_text.rb.erb +18 -0
  106. data/lib/generators/flipper/update_generator.rb +35 -0
  107. data/package-lock.json +41 -0
  108. data/package.json +10 -0
  109. data/spec/fixtures/environment.rb +1 -0
  110. data/spec/flipper/adapter_builder_spec.rb +72 -0
  111. data/spec/flipper/adapter_spec.rb +1 -0
  112. data/spec/flipper/adapters/actor_limit_spec.rb +20 -0
  113. data/spec/flipper/adapters/http/client_spec.rb +61 -0
  114. data/spec/flipper/adapters/http_spec.rb +135 -74
  115. data/spec/flipper/adapters/memoizable_spec.rb +15 -15
  116. data/spec/flipper/adapters/poll_spec.rb +41 -0
  117. data/spec/flipper/adapters/read_only_spec.rb +26 -11
  118. data/spec/flipper/adapters/strict_spec.rb +64 -0
  119. data/spec/flipper/adapters/sync/feature_synchronizer_spec.rb +27 -0
  120. data/spec/flipper/cli_spec.rb +166 -0
  121. data/spec/flipper/cloud/configuration_spec.rb +39 -57
  122. data/spec/flipper/cloud/dsl_spec.rb +6 -6
  123. data/spec/flipper/cloud/middleware_spec.rb +8 -8
  124. data/spec/flipper/cloud/telemetry/backoff_policy_spec.rb +107 -0
  125. data/spec/flipper/cloud/telemetry/metric_spec.rb +87 -0
  126. data/spec/flipper/cloud/telemetry/metric_storage_spec.rb +58 -0
  127. data/spec/flipper/cloud/telemetry/submitter_spec.rb +145 -0
  128. data/spec/flipper/cloud/telemetry_spec.rb +208 -0
  129. data/spec/flipper/cloud_spec.rb +31 -25
  130. data/spec/flipper/configuration_spec.rb +17 -0
  131. data/spec/flipper/dsl_spec.rb +39 -3
  132. data/spec/flipper/engine_spec.rb +226 -42
  133. data/spec/flipper/exporters/json/v1_spec.rb +3 -3
  134. data/spec/flipper/expression/builder_spec.rb +248 -0
  135. data/spec/flipper/expression_spec.rb +188 -0
  136. data/spec/flipper/expressions/all_spec.rb +15 -0
  137. data/spec/flipper/expressions/any_spec.rb +15 -0
  138. data/spec/flipper/expressions/boolean_spec.rb +15 -0
  139. data/spec/flipper/expressions/duration_spec.rb +43 -0
  140. data/spec/flipper/expressions/equal_spec.rb +24 -0
  141. data/spec/flipper/expressions/greater_than_or_equal_to_spec.rb +28 -0
  142. data/spec/flipper/expressions/greater_than_spec.rb +28 -0
  143. data/spec/flipper/expressions/less_than_or_equal_to_spec.rb +28 -0
  144. data/spec/flipper/expressions/less_than_spec.rb +32 -0
  145. data/spec/flipper/expressions/not_equal_spec.rb +15 -0
  146. data/spec/flipper/expressions/now_spec.rb +11 -0
  147. data/spec/flipper/expressions/number_spec.rb +21 -0
  148. data/spec/flipper/expressions/percentage_of_actors_spec.rb +20 -0
  149. data/spec/flipper/expressions/percentage_spec.rb +15 -0
  150. data/spec/flipper/expressions/property_spec.rb +13 -0
  151. data/spec/flipper/expressions/random_spec.rb +9 -0
  152. data/spec/flipper/expressions/string_spec.rb +11 -0
  153. data/spec/flipper/expressions/time_spec.rb +13 -0
  154. data/spec/flipper/feature_spec.rb +380 -10
  155. data/spec/flipper/gate_values_spec.rb +2 -2
  156. data/spec/flipper/gates/expression_spec.rb +108 -0
  157. data/spec/flipper/identifier_spec.rb +4 -5
  158. data/spec/flipper/instrumentation/log_subscriber_spec.rb +10 -2
  159. data/spec/flipper/instrumentation/statsd_subscriber_spec.rb +16 -2
  160. data/spec/flipper/middleware/memoizer_spec.rb +79 -10
  161. data/spec/flipper/model/active_record_spec.rb +72 -0
  162. data/spec/flipper/serializers/gzip_spec.rb +13 -0
  163. data/spec/flipper/serializers/json_spec.rb +13 -0
  164. data/spec/flipper/typecast_spec.rb +43 -7
  165. data/spec/flipper/types/actor_spec.rb +18 -1
  166. data/spec/flipper_integration_spec.rb +102 -4
  167. data/spec/flipper_spec.rb +91 -3
  168. data/spec/spec_helper.rb +17 -5
  169. data/spec/support/actor_names.yml +1 -0
  170. data/spec/support/fail_on_output.rb +8 -0
  171. data/spec/support/fake_backoff_policy.rb +15 -0
  172. data/spec/support/spec_helpers.rb +34 -8
  173. data/test/adapters/actor_limit_test.rb +20 -0
  174. data/test_rails/generators/flipper/setup_generator_test.rb +69 -0
  175. data/test_rails/generators/flipper/update_generator_test.rb +96 -0
  176. data/test_rails/helper.rb +22 -2
  177. data/test_rails/system/test_help_test.rb +52 -0
  178. metadata +145 -29
  179. data/lib/flipper/cloud/instrumenter.rb +0 -48
  180. data/spec/support/climate_control.rb +0 -7
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flipper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Nunemaker
8
- autorequire:
9
- bindir: bin
8
+ bindir: exe
10
9
  cert_chain: []
11
- date: 2023-08-23 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: concurrent-ruby
@@ -24,31 +23,19 @@ dependencies:
24
23
  - - "<"
25
24
  - !ruby/object:Gem::Version
26
25
  version: '2'
27
- - !ruby/object:Gem::Dependency
28
- name: brow
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 0.4.1
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.4.1
41
- description:
42
26
  email: support@flippercloud.io
43
- executables: []
27
+ executables:
28
+ - flipper
44
29
  extensions: []
45
30
  extra_rdoc_files: []
46
31
  files:
47
32
  - ".codeclimate.yml"
33
+ - ".github/FUNDING.yml"
48
34
  - ".github/dependabot.yml"
49
35
  - ".github/workflows/ci.yml"
50
36
  - ".github/workflows/examples.yml"
51
37
  - ".rspec"
38
+ - CLAUDE.md
52
39
  - CODE_OF_CONDUCT.md
53
40
  - Changelog.md
54
41
  - Dockerfile
@@ -71,6 +58,7 @@ files:
71
58
  - examples/api/memoized.ru
72
59
  - examples/basic.rb
73
60
  - examples/cloud/app.ru
61
+ - examples/cloud/backoff_policy.rb
74
62
  - examples/cloud/basic.rb
75
63
  - examples/cloud/cloud_setup.rb
76
64
  - examples/cloud/forked.rb
@@ -79,6 +67,7 @@ files:
79
67
  - examples/configuring_default.rb
80
68
  - examples/dsl.rb
81
69
  - examples/enabled_for_actor.rb
70
+ - examples/expressions.rb
82
71
  - examples/group.rb
83
72
  - examples/group_dynamic_lookup.rb
84
73
  - examples/group_with_members.rb
@@ -92,11 +81,16 @@ files:
92
81
  - examples/percentage_of_actors_enabled_check.rb
93
82
  - examples/percentage_of_actors_group.rb
94
83
  - examples/percentage_of_time.rb
84
+ - examples/strict.rb
85
+ - exe/flipper
95
86
  - flipper-cloud.gemspec
96
87
  - flipper.gemspec
97
88
  - lib/flipper.rb
98
89
  - lib/flipper/actor.rb
99
90
  - lib/flipper/adapter.rb
91
+ - lib/flipper/adapter_builder.rb
92
+ - lib/flipper/adapters/actor_limit.rb
93
+ - lib/flipper/adapters/cache_base.rb
100
94
  - lib/flipper/adapters/dual_write.rb
101
95
  - lib/flipper/adapters/failover.rb
102
96
  - lib/flipper/adapters/failsafe.rb
@@ -111,17 +105,25 @@ files:
111
105
  - lib/flipper/adapters/poll/poller.rb
112
106
  - lib/flipper/adapters/pstore.rb
113
107
  - lib/flipper/adapters/read_only.rb
108
+ - lib/flipper/adapters/strict.rb
114
109
  - lib/flipper/adapters/sync.rb
115
110
  - lib/flipper/adapters/sync/feature_synchronizer.rb
116
111
  - lib/flipper/adapters/sync/interval_synchronizer.rb
117
112
  - lib/flipper/adapters/sync/synchronizer.rb
113
+ - lib/flipper/adapters/wrapper.rb
114
+ - lib/flipper/cli.rb
118
115
  - lib/flipper/cloud.rb
119
116
  - lib/flipper/cloud/configuration.rb
120
117
  - lib/flipper/cloud/dsl.rb
121
- - lib/flipper/cloud/instrumenter.rb
122
118
  - lib/flipper/cloud/message_verifier.rb
123
119
  - lib/flipper/cloud/middleware.rb
124
120
  - lib/flipper/cloud/routes.rb
121
+ - lib/flipper/cloud/telemetry.rb
122
+ - lib/flipper/cloud/telemetry/backoff_policy.rb
123
+ - lib/flipper/cloud/telemetry/instrumenter.rb
124
+ - lib/flipper/cloud/telemetry/metric.rb
125
+ - lib/flipper/cloud/telemetry/metric_storage.rb
126
+ - lib/flipper/cloud/telemetry/submitter.rb
125
127
  - lib/flipper/configuration.rb
126
128
  - lib/flipper/dsl.rb
127
129
  - lib/flipper/engine.rb
@@ -130,12 +132,35 @@ files:
130
132
  - lib/flipper/exporter.rb
131
133
  - lib/flipper/exporters/json/export.rb
132
134
  - lib/flipper/exporters/json/v1.rb
135
+ - lib/flipper/expression.rb
136
+ - lib/flipper/expression/builder.rb
137
+ - lib/flipper/expression/constant.rb
138
+ - lib/flipper/expressions/all.rb
139
+ - lib/flipper/expressions/any.rb
140
+ - lib/flipper/expressions/boolean.rb
141
+ - lib/flipper/expressions/comparable.rb
142
+ - lib/flipper/expressions/duration.rb
143
+ - lib/flipper/expressions/equal.rb
144
+ - lib/flipper/expressions/greater_than.rb
145
+ - lib/flipper/expressions/greater_than_or_equal_to.rb
146
+ - lib/flipper/expressions/less_than.rb
147
+ - lib/flipper/expressions/less_than_or_equal_to.rb
148
+ - lib/flipper/expressions/not_equal.rb
149
+ - lib/flipper/expressions/now.rb
150
+ - lib/flipper/expressions/number.rb
151
+ - lib/flipper/expressions/percentage.rb
152
+ - lib/flipper/expressions/percentage_of_actors.rb
153
+ - lib/flipper/expressions/property.rb
154
+ - lib/flipper/expressions/random.rb
155
+ - lib/flipper/expressions/string.rb
156
+ - lib/flipper/expressions/time.rb
133
157
  - lib/flipper/feature.rb
134
158
  - lib/flipper/feature_check_context.rb
135
159
  - lib/flipper/gate.rb
136
160
  - lib/flipper/gate_values.rb
137
161
  - lib/flipper/gates/actor.rb
138
162
  - lib/flipper/gates/boolean.rb
163
+ - lib/flipper/gates/expression.rb
139
164
  - lib/flipper/gates/group.rb
140
165
  - lib/flipper/gates/percentage_of_actors.rb
141
166
  - lib/flipper/gates/percentage_of_time.rb
@@ -149,10 +174,14 @@ files:
149
174
  - lib/flipper/metadata.rb
150
175
  - lib/flipper/middleware/memoizer.rb
151
176
  - lib/flipper/middleware/setup_env.rb
177
+ - lib/flipper/model/active_record.rb
152
178
  - lib/flipper/poller.rb
153
179
  - lib/flipper/registry.rb
180
+ - lib/flipper/serializers/gzip.rb
181
+ - lib/flipper/serializers/json.rb
154
182
  - lib/flipper/spec/shared_adapter_specs.rb
155
183
  - lib/flipper/test/shared_adapter_test.rb
184
+ - lib/flipper/test_help.rb
156
185
  - lib/flipper/type.rb
157
186
  - lib/flipper/typecast.rb
158
187
  - lib/flipper/types/actor.rb
@@ -162,28 +191,47 @@ files:
162
191
  - lib/flipper/types/percentage_of_actors.rb
163
192
  - lib/flipper/types/percentage_of_time.rb
164
193
  - lib/flipper/version.rb
194
+ - lib/generators/flipper/setup_generator.rb
195
+ - lib/generators/flipper/templates/initializer.rb
196
+ - lib/generators/flipper/templates/update/migrations/01_create_flipper_tables.rb.erb
197
+ - lib/generators/flipper/templates/update/migrations/02_change_flipper_gates_value_to_text.rb.erb
198
+ - lib/generators/flipper/update_generator.rb
199
+ - package-lock.json
200
+ - package.json
201
+ - spec/fixtures/environment.rb
165
202
  - spec/fixtures/feature.json
166
203
  - spec/fixtures/flipper_pstore_1679087600.json
167
204
  - spec/flipper/actor_spec.rb
205
+ - spec/flipper/adapter_builder_spec.rb
168
206
  - spec/flipper/adapter_spec.rb
207
+ - spec/flipper/adapters/actor_limit_spec.rb
169
208
  - spec/flipper/adapters/dual_write_spec.rb
170
209
  - spec/flipper/adapters/failover_spec.rb
171
210
  - spec/flipper/adapters/failsafe_spec.rb
211
+ - spec/flipper/adapters/http/client_spec.rb
172
212
  - spec/flipper/adapters/http_spec.rb
173
213
  - spec/flipper/adapters/instrumented_spec.rb
174
214
  - spec/flipper/adapters/memoizable_spec.rb
175
215
  - spec/flipper/adapters/memory_spec.rb
176
216
  - spec/flipper/adapters/operation_logger_spec.rb
217
+ - spec/flipper/adapters/poll_spec.rb
177
218
  - spec/flipper/adapters/pstore_spec.rb
178
219
  - spec/flipper/adapters/read_only_spec.rb
220
+ - spec/flipper/adapters/strict_spec.rb
179
221
  - spec/flipper/adapters/sync/feature_synchronizer_spec.rb
180
222
  - spec/flipper/adapters/sync/interval_synchronizer_spec.rb
181
223
  - spec/flipper/adapters/sync/synchronizer_spec.rb
182
224
  - spec/flipper/adapters/sync_spec.rb
225
+ - spec/flipper/cli_spec.rb
183
226
  - spec/flipper/cloud/configuration_spec.rb
184
227
  - spec/flipper/cloud/dsl_spec.rb
185
228
  - spec/flipper/cloud/message_verifier_spec.rb
186
229
  - spec/flipper/cloud/middleware_spec.rb
230
+ - spec/flipper/cloud/telemetry/backoff_policy_spec.rb
231
+ - spec/flipper/cloud/telemetry/metric_spec.rb
232
+ - spec/flipper/cloud/telemetry/metric_storage_spec.rb
233
+ - spec/flipper/cloud/telemetry/submitter_spec.rb
234
+ - spec/flipper/cloud/telemetry_spec.rb
187
235
  - spec/flipper/cloud_spec.rb
188
236
  - spec/flipper/configuration_spec.rb
189
237
  - spec/flipper/dsl_spec.rb
@@ -192,12 +240,33 @@ files:
192
240
  - spec/flipper/exporter_spec.rb
193
241
  - spec/flipper/exporters/json/export_spec.rb
194
242
  - spec/flipper/exporters/json/v1_spec.rb
243
+ - spec/flipper/expression/builder_spec.rb
244
+ - spec/flipper/expression_spec.rb
245
+ - spec/flipper/expressions/all_spec.rb
246
+ - spec/flipper/expressions/any_spec.rb
247
+ - spec/flipper/expressions/boolean_spec.rb
248
+ - spec/flipper/expressions/duration_spec.rb
249
+ - spec/flipper/expressions/equal_spec.rb
250
+ - spec/flipper/expressions/greater_than_or_equal_to_spec.rb
251
+ - spec/flipper/expressions/greater_than_spec.rb
252
+ - spec/flipper/expressions/less_than_or_equal_to_spec.rb
253
+ - spec/flipper/expressions/less_than_spec.rb
254
+ - spec/flipper/expressions/not_equal_spec.rb
255
+ - spec/flipper/expressions/now_spec.rb
256
+ - spec/flipper/expressions/number_spec.rb
257
+ - spec/flipper/expressions/percentage_of_actors_spec.rb
258
+ - spec/flipper/expressions/percentage_spec.rb
259
+ - spec/flipper/expressions/property_spec.rb
260
+ - spec/flipper/expressions/random_spec.rb
261
+ - spec/flipper/expressions/string_spec.rb
262
+ - spec/flipper/expressions/time_spec.rb
195
263
  - spec/flipper/feature_check_context_spec.rb
196
264
  - spec/flipper/feature_spec.rb
197
265
  - spec/flipper/gate_spec.rb
198
266
  - spec/flipper/gate_values_spec.rb
199
267
  - spec/flipper/gates/actor_spec.rb
200
268
  - spec/flipper/gates/boolean_spec.rb
269
+ - spec/flipper/gates/expression_spec.rb
201
270
  - spec/flipper/gates/group_spec.rb
202
271
  - spec/flipper/gates/percentage_of_actors_spec.rb
203
272
  - spec/flipper/gates/percentage_of_time_spec.rb
@@ -208,8 +277,11 @@ files:
208
277
  - spec/flipper/instrumenters/noop_spec.rb
209
278
  - spec/flipper/middleware/memoizer_spec.rb
210
279
  - spec/flipper/middleware/setup_env_spec.rb
280
+ - spec/flipper/model/active_record_spec.rb
211
281
  - spec/flipper/poller_spec.rb
212
282
  - spec/flipper/registry_spec.rb
283
+ - spec/flipper/serializers/gzip_spec.rb
284
+ - spec/flipper/serializers/json_spec.rb
213
285
  - spec/flipper/typecast_spec.rb
214
286
  - spec/flipper/types/actor_spec.rb
215
287
  - spec/flipper/types/boolean_spec.rb
@@ -220,15 +292,21 @@ files:
220
292
  - spec/flipper_integration_spec.rb
221
293
  - spec/flipper_spec.rb
222
294
  - spec/spec_helper.rb
223
- - spec/support/climate_control.rb
295
+ - spec/support/actor_names.yml
224
296
  - spec/support/descriptions.yml
297
+ - spec/support/fail_on_output.rb
298
+ - spec/support/fake_backoff_policy.rb
225
299
  - spec/support/fake_udp_socket.rb
226
300
  - spec/support/skippable.rb
227
301
  - spec/support/spec_helpers.rb
302
+ - test/adapters/actor_limit_test.rb
228
303
  - test/adapters/memory_test.rb
229
304
  - test/adapters/pstore_test.rb
230
305
  - test/test_helper.rb
306
+ - test_rails/generators/flipper/setup_generator_test.rb
307
+ - test_rails/generators/flipper/update_generator_test.rb
231
308
  - test_rails/helper.rb
309
+ - test_rails/system/test_help_test.rb
232
310
  homepage: https://www.flippercloud.io/docs
233
311
  licenses:
234
312
  - MIT
@@ -237,8 +315,8 @@ metadata:
237
315
  homepage_uri: https://www.flippercloud.io
238
316
  source_code_uri: https://github.com/flippercloud/flipper
239
317
  bug_tracker_uri: https://github.com/flippercloud/flipper/issues
240
- changelog_uri: https://github.com/flippercloud/flipper/blob/main/Changelog.md
241
- post_install_message:
318
+ changelog_uri: https://github.com/flippercloud/flipper/releases/tag/v1.3.6
319
+ funding_uri: https://github.com/sponsors/flippercloud
242
320
  rdoc_options: []
243
321
  require_paths:
244
322
  - lib
@@ -246,40 +324,51 @@ required_ruby_version: !ruby/object:Gem::Requirement
246
324
  requirements:
247
325
  - - ">="
248
326
  - !ruby/object:Gem::Version
249
- version: '0'
327
+ version: '2.6'
250
328
  required_rubygems_version: !ruby/object:Gem::Requirement
251
329
  requirements:
252
330
  - - ">="
253
331
  - !ruby/object:Gem::Version
254
332
  version: '0'
255
333
  requirements: []
256
- rubygems_version: 3.4.10
257
- signing_key:
334
+ rubygems_version: 3.6.9
258
335
  specification_version: 4
259
- summary: Feature flipper for ANYTHING
336
+ summary: Beautiful, performant feature flags for Ruby and Rails.
260
337
  test_files:
338
+ - spec/fixtures/environment.rb
261
339
  - spec/fixtures/feature.json
262
340
  - spec/fixtures/flipper_pstore_1679087600.json
263
341
  - spec/flipper/actor_spec.rb
342
+ - spec/flipper/adapter_builder_spec.rb
264
343
  - spec/flipper/adapter_spec.rb
344
+ - spec/flipper/adapters/actor_limit_spec.rb
265
345
  - spec/flipper/adapters/dual_write_spec.rb
266
346
  - spec/flipper/adapters/failover_spec.rb
267
347
  - spec/flipper/adapters/failsafe_spec.rb
348
+ - spec/flipper/adapters/http/client_spec.rb
268
349
  - spec/flipper/adapters/http_spec.rb
269
350
  - spec/flipper/adapters/instrumented_spec.rb
270
351
  - spec/flipper/adapters/memoizable_spec.rb
271
352
  - spec/flipper/adapters/memory_spec.rb
272
353
  - spec/flipper/adapters/operation_logger_spec.rb
354
+ - spec/flipper/adapters/poll_spec.rb
273
355
  - spec/flipper/adapters/pstore_spec.rb
274
356
  - spec/flipper/adapters/read_only_spec.rb
357
+ - spec/flipper/adapters/strict_spec.rb
275
358
  - spec/flipper/adapters/sync/feature_synchronizer_spec.rb
276
359
  - spec/flipper/adapters/sync/interval_synchronizer_spec.rb
277
360
  - spec/flipper/adapters/sync/synchronizer_spec.rb
278
361
  - spec/flipper/adapters/sync_spec.rb
362
+ - spec/flipper/cli_spec.rb
279
363
  - spec/flipper/cloud/configuration_spec.rb
280
364
  - spec/flipper/cloud/dsl_spec.rb
281
365
  - spec/flipper/cloud/message_verifier_spec.rb
282
366
  - spec/flipper/cloud/middleware_spec.rb
367
+ - spec/flipper/cloud/telemetry/backoff_policy_spec.rb
368
+ - spec/flipper/cloud/telemetry/metric_spec.rb
369
+ - spec/flipper/cloud/telemetry/metric_storage_spec.rb
370
+ - spec/flipper/cloud/telemetry/submitter_spec.rb
371
+ - spec/flipper/cloud/telemetry_spec.rb
283
372
  - spec/flipper/cloud_spec.rb
284
373
  - spec/flipper/configuration_spec.rb
285
374
  - spec/flipper/dsl_spec.rb
@@ -288,12 +377,33 @@ test_files:
288
377
  - spec/flipper/exporter_spec.rb
289
378
  - spec/flipper/exporters/json/export_spec.rb
290
379
  - spec/flipper/exporters/json/v1_spec.rb
380
+ - spec/flipper/expression/builder_spec.rb
381
+ - spec/flipper/expression_spec.rb
382
+ - spec/flipper/expressions/all_spec.rb
383
+ - spec/flipper/expressions/any_spec.rb
384
+ - spec/flipper/expressions/boolean_spec.rb
385
+ - spec/flipper/expressions/duration_spec.rb
386
+ - spec/flipper/expressions/equal_spec.rb
387
+ - spec/flipper/expressions/greater_than_or_equal_to_spec.rb
388
+ - spec/flipper/expressions/greater_than_spec.rb
389
+ - spec/flipper/expressions/less_than_or_equal_to_spec.rb
390
+ - spec/flipper/expressions/less_than_spec.rb
391
+ - spec/flipper/expressions/not_equal_spec.rb
392
+ - spec/flipper/expressions/now_spec.rb
393
+ - spec/flipper/expressions/number_spec.rb
394
+ - spec/flipper/expressions/percentage_of_actors_spec.rb
395
+ - spec/flipper/expressions/percentage_spec.rb
396
+ - spec/flipper/expressions/property_spec.rb
397
+ - spec/flipper/expressions/random_spec.rb
398
+ - spec/flipper/expressions/string_spec.rb
399
+ - spec/flipper/expressions/time_spec.rb
291
400
  - spec/flipper/feature_check_context_spec.rb
292
401
  - spec/flipper/feature_spec.rb
293
402
  - spec/flipper/gate_spec.rb
294
403
  - spec/flipper/gate_values_spec.rb
295
404
  - spec/flipper/gates/actor_spec.rb
296
405
  - spec/flipper/gates/boolean_spec.rb
406
+ - spec/flipper/gates/expression_spec.rb
297
407
  - spec/flipper/gates/group_spec.rb
298
408
  - spec/flipper/gates/percentage_of_actors_spec.rb
299
409
  - spec/flipper/gates/percentage_of_time_spec.rb
@@ -304,8 +414,11 @@ test_files:
304
414
  - spec/flipper/instrumenters/noop_spec.rb
305
415
  - spec/flipper/middleware/memoizer_spec.rb
306
416
  - spec/flipper/middleware/setup_env_spec.rb
417
+ - spec/flipper/model/active_record_spec.rb
307
418
  - spec/flipper/poller_spec.rb
308
419
  - spec/flipper/registry_spec.rb
420
+ - spec/flipper/serializers/gzip_spec.rb
421
+ - spec/flipper/serializers/json_spec.rb
309
422
  - spec/flipper/typecast_spec.rb
310
423
  - spec/flipper/types/actor_spec.rb
311
424
  - spec/flipper/types/boolean_spec.rb
@@ -316,11 +429,14 @@ test_files:
316
429
  - spec/flipper_integration_spec.rb
317
430
  - spec/flipper_spec.rb
318
431
  - spec/spec_helper.rb
319
- - spec/support/climate_control.rb
432
+ - spec/support/actor_names.yml
320
433
  - spec/support/descriptions.yml
434
+ - spec/support/fail_on_output.rb
435
+ - spec/support/fake_backoff_policy.rb
321
436
  - spec/support/fake_udp_socket.rb
322
437
  - spec/support/skippable.rb
323
438
  - spec/support/spec_helpers.rb
439
+ - test/adapters/actor_limit_test.rb
324
440
  - test/adapters/memory_test.rb
325
441
  - test/adapters/pstore_test.rb
326
442
  - test/test_helper.rb
@@ -1,48 +0,0 @@
1
- require "delegate"
2
- require "flipper/instrumenters/noop"
3
-
4
- module Flipper
5
- module Cloud
6
- class Instrumenter < SimpleDelegator
7
- def initialize(options = {})
8
- @brow = options.fetch(:brow)
9
- @instrumenter = options.fetch(:instrumenter, Instrumenters::Noop)
10
- super @instrumenter
11
- end
12
-
13
- def instrument(name, payload = {}, &block)
14
- result = @instrumenter.instrument(name, payload, &block)
15
- push name, payload
16
- result
17
- end
18
-
19
- private
20
-
21
- def push(name, payload)
22
- return unless name == Flipper::Feature::InstrumentationName
23
- return unless :enabled? == payload[:operation]
24
-
25
- dimensions = {
26
- "feature" => payload[:feature_name].to_s,
27
- "result" => payload[:result].to_s,
28
- }
29
-
30
- if (thing = payload[:thing])
31
- dimensions["flipper_id"] = thing.value.to_s
32
- end
33
-
34
- if (actors = payload[:actors])
35
- dimensions["flipper_ids"] = actors.map { |actor| actor.value.to_s }
36
- end
37
-
38
- event = {
39
- type: "enabled",
40
- dimensions: dimensions,
41
- measures: {},
42
- ts: Time.now.utc,
43
- }
44
- @brow.push event
45
- end
46
- end
47
- end
48
- end
@@ -1,7 +0,0 @@
1
- require 'climate_control'
2
-
3
- RSpec.configure do |config|
4
- def with_env(options = {}, &block)
5
- ClimateControl.modify(options, &block)
6
- end
7
- end