flipper-ui 0.25.3 → 0.25.4
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/examples/ui/read_only.ru +43 -0
- data/lib/flipper/ui/action.rb +12 -0
- data/lib/flipper/ui/actions/actors_gate.rb +2 -0
- data/lib/flipper/ui/actions/add_feature.rb +2 -0
- data/lib/flipper/ui/actions/boolean_gate.rb +2 -0
- data/lib/flipper/ui/actions/feature.rb +2 -0
- data/lib/flipper/ui/actions/features.rb +2 -0
- data/lib/flipper/ui/actions/groups_gate.rb +2 -0
- data/lib/flipper/ui/actions/percentage_of_actors_gate.rb +2 -0
- data/lib/flipper/ui/actions/percentage_of_time_gate.rb +2 -0
- data/lib/flipper/ui/configuration.rb +6 -0
- data/lib/flipper/ui/views/feature.erb +135 -108
- data/lib/flipper/ui/views/features.erb +3 -3
- data/lib/flipper/ui/views/read_only.erb +3 -0
- data/lib/flipper/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8387d32b596eda073c7289c8ce794fb8badbe43e5f235ef2032106cb9968089
|
4
|
+
data.tar.gz: c767b97195e28a665a483a63d310c216e09175866826c2e16e501488849b469d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bea51d75cc9e66dceb9287e50b0868a501355cacf54253031f017e307f2eeefe2b680b40e49a2d5d917a216a33daeecf03177f8330292742cf4ceb9dc6882e84
|
7
|
+
data.tar.gz: 29d04be79be90455fa4c9fd6c450b3cfddbcaf7f068a4d35d134c63b25811e87198bc273dd6525b78185363738759629a2ddcbd62dca504b2ad1b0b5631a3101
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Usage:
|
3
|
+
# # if you want it to not reload and be really fast
|
4
|
+
# bin/rackup examples/ui/read_only.ru -p 9999
|
5
|
+
#
|
6
|
+
# # if you want reloading
|
7
|
+
# bin/shotgun examples/ui/read_only.ru -p 9999
|
8
|
+
#
|
9
|
+
# http://localhost:9999/
|
10
|
+
#
|
11
|
+
require 'bundler/setup'
|
12
|
+
require "flipper/ui"
|
13
|
+
require "flipper/adapters/pstore"
|
14
|
+
|
15
|
+
Flipper.register(:admins) { |actor|
|
16
|
+
actor.respond_to?(:admin?) && actor.admin?
|
17
|
+
}
|
18
|
+
|
19
|
+
Flipper.register(:early_access) { |actor|
|
20
|
+
actor.respond_to?(:early?) && actor.early?
|
21
|
+
}
|
22
|
+
|
23
|
+
Flipper::UI.configure do |config|
|
24
|
+
config.banner_text = 'Read only mode.'
|
25
|
+
config.banner_class = 'danger'
|
26
|
+
config.read_only = true
|
27
|
+
end
|
28
|
+
|
29
|
+
# You can uncomment these to get some default data:
|
30
|
+
# Flipper.enable(:search_performance_another_long_thing)
|
31
|
+
# Flipper.disable(:gauges_tracking)
|
32
|
+
# Flipper.disable(:unused)
|
33
|
+
# Flipper.enable_actor(:suits, Flipper::Actor.new('1'))
|
34
|
+
# Flipper.enable_actor(:suits, Flipper::Actor.new('6'))
|
35
|
+
# Flipper.enable_group(:secrets, :admins)
|
36
|
+
# Flipper.enable_group(:secrets, :early_access)
|
37
|
+
# Flipper.enable_percentage_of_time(:logging, 5)
|
38
|
+
# Flipper.enable_percentage_of_actors(:new_cache, 15)
|
39
|
+
# Flipper.add("a/b")
|
40
|
+
|
41
|
+
run Flipper::UI.app { |builder|
|
42
|
+
builder.use Rack::Session::Cookie, secret: "_super_secret"
|
43
|
+
}
|
data/lib/flipper/ui/action.rb
CHANGED
@@ -271,6 +271,18 @@ module Flipper
|
|
271
271
|
VALID_REQUEST_METHOD_NAMES.include?(request_method_name)
|
272
272
|
end
|
273
273
|
|
274
|
+
# Internal: Method to call when the UI is in read only mode and you want
|
275
|
+
# to inform people of that fact.
|
276
|
+
def read_only
|
277
|
+
status 403
|
278
|
+
|
279
|
+
breadcrumb 'Home', '/'
|
280
|
+
breadcrumb 'Features', '/features'
|
281
|
+
breadcrumb 'Noooooope'
|
282
|
+
|
283
|
+
halt view_response(:read_only)
|
284
|
+
end
|
285
|
+
|
274
286
|
def bootstrap_css
|
275
287
|
SOURCES[:bootstrap_css]
|
276
288
|
end
|
@@ -8,6 +8,11 @@ module Flipper
|
|
8
8
|
attr_accessor :banner_text,
|
9
9
|
:banner_class
|
10
10
|
|
11
|
+
# Public: Is the UI in read only mode or not. Default is false. This
|
12
|
+
# supersedes all other write-related options such as
|
13
|
+
# (feature_creation_enabled and feature_removal_enabled).
|
14
|
+
attr_accessor :read_only
|
15
|
+
|
11
16
|
# Public: If you set this, the UI will always have a first breadcrumb that
|
12
17
|
# says "App" which points to this href. The href can be a path (ie: "/")
|
13
18
|
# or full url ("https://app.example.com/").
|
@@ -79,6 +84,7 @@ module Flipper
|
|
79
84
|
@show_feature_description_in_list = false
|
80
85
|
@actors_separator = ','
|
81
86
|
@confirm_fully_enable = false
|
87
|
+
@read_only = false
|
82
88
|
end
|
83
89
|
|
84
90
|
def using_descriptions?
|
@@ -40,20 +40,22 @@
|
|
40
40
|
</strong>
|
41
41
|
</h6>
|
42
42
|
</div>
|
43
|
-
|
44
|
-
<
|
45
|
-
|
46
|
-
|
47
|
-
<
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
<
|
56
|
-
|
43
|
+
<% unless Flipper::UI.configuration.read_only %>
|
44
|
+
<div class="col col-auto toggle-block-when-off">
|
45
|
+
<button class="btn btn-outline-secondary js-toggle-trigger" data-toggle="collapse" data-target="#add-actor">Add an actor</button>
|
46
|
+
</div>
|
47
|
+
<div class="col toggle-block-when-on">
|
48
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/actors" method="post" class="form-inline">
|
49
|
+
<%== csrf_input_tag %>
|
50
|
+
<input type="hidden" name="operation" value="enable">
|
51
|
+
<input type="text" name="value" placeholder="<%= Flipper::UI.configuration.add_actor_placeholder %>" class="form-control form-control-sm mr-sm-2 mb-2 mb-sm-0">
|
52
|
+
<input type="submit" value="Add Actor" class="btn btn-sm btn-light">
|
53
|
+
</form>
|
54
|
+
</div>
|
55
|
+
<div class="col col-auto toggle-block-when-on">
|
56
|
+
<button type="button" class="btn btn-outline-secondary js-toggle-trigger">Cancel</button>
|
57
|
+
</div>
|
58
|
+
<% end %>
|
57
59
|
</div>
|
58
60
|
</div>
|
59
61
|
|
@@ -65,14 +67,16 @@
|
|
65
67
|
<h6 class="m-0"><%= item %></h6>
|
66
68
|
</div>
|
67
69
|
<div class="col col-auto">
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
<% unless Flipper::UI.configuration.read_only %>
|
71
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/actors" method="post">
|
72
|
+
<%== csrf_input_tag %>
|
73
|
+
<input type="hidden" name="operation" value="disable">
|
74
|
+
<input type="hidden" name="value" value="<%= item %>">
|
75
|
+
<button type="submit" value="Disable" class="btn btn-outline-danger" data-toggle="tooltip" title="Disable <%= item %>" data-placement="left">
|
76
|
+
Remove
|
77
|
+
</button>
|
78
|
+
</form>
|
79
|
+
<% end %>
|
76
80
|
</div>
|
77
81
|
</div>
|
78
82
|
</div>
|
@@ -92,29 +96,31 @@
|
|
92
96
|
</strong>
|
93
97
|
</h6>
|
94
98
|
</div>
|
95
|
-
|
96
|
-
<
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
<
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
<
|
117
|
-
|
99
|
+
<% unless Flipper::UI.configuration.read_only %>
|
100
|
+
<div class="col col-auto toggle-block-when-off">
|
101
|
+
<button class="btn btn-outline-secondary js-toggle-trigger" data-toggle="collapse" data-target="#add-actor">Add a group</button>
|
102
|
+
</div>
|
103
|
+
<div class="col collapse toggle-block-when-on">
|
104
|
+
<% if @feature.disabled_groups.empty? %>
|
105
|
+
All groups enabled.
|
106
|
+
<% else %>
|
107
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/groups" method="post" class="form-inline">
|
108
|
+
<%== csrf_input_tag %>
|
109
|
+
<input type="hidden" name="operation" value="enable">
|
110
|
+
<select name="value" class="form-control form-control-sm mr-sm-2 mb-2 mb-sm-0">
|
111
|
+
<option value="">Select a group...</option>
|
112
|
+
<% @feature.disabled_groups.each do |group| %>
|
113
|
+
<option value="<%= group.name %>"><%= group.name %></option>
|
114
|
+
<% end %>
|
115
|
+
</select>
|
116
|
+
<input type="submit" value="Add Group" class="btn btn-sm btn-light btn">
|
117
|
+
</form>
|
118
|
+
<% end %>
|
119
|
+
</div>
|
120
|
+
<div class="col col-auto toggle-block-when-on">
|
121
|
+
<button type="button" class="btn btn-outline-secondary js-toggle-trigger">Cancel</button>
|
122
|
+
</div>
|
123
|
+
<% end %>
|
118
124
|
</div>
|
119
125
|
</div>
|
120
126
|
|
@@ -126,14 +132,16 @@
|
|
126
132
|
<h6 class="m-0"><%= item %></h6>
|
127
133
|
</div>
|
128
134
|
<div class="col col-auto">
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
135
|
+
<% unless Flipper::UI.configuration.read_only %>
|
136
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/groups" method="post">
|
137
|
+
<%== csrf_input_tag %>
|
138
|
+
<input type="hidden" name="operation" value="disable">
|
139
|
+
<input type="hidden" name="value" value="<%= item %>">
|
140
|
+
<button type="submit" value="Disable" class="btn btn-outline-danger" data-toggle="tooltip" title="Disable <%= item %>" data-placement="left">
|
141
|
+
Remove
|
142
|
+
</button>
|
143
|
+
</form>
|
144
|
+
<% end %>
|
137
145
|
</div>
|
138
146
|
</div>
|
139
147
|
</div>
|
@@ -146,36 +154,40 @@
|
|
146
154
|
<div class="col col-mr-auto">
|
147
155
|
<h6 class="m-0"><strong class="<%= "text-muted" unless @feature.percentage_of_actors_value > 0 %>">Enabled for <%= @feature.percentage_of_actors_value %>% of actors</strong></h6>
|
148
156
|
</div>
|
149
|
-
|
150
|
-
<
|
151
|
-
|
152
|
-
|
153
|
-
<
|
154
|
-
|
157
|
+
<% unless Flipper::UI.configuration.read_only %>
|
158
|
+
<div class="col col-auto toggle-block-when-off">
|
159
|
+
<button class="btn btn-outline-secondary js-toggle-trigger">Edit</button>
|
160
|
+
</div>
|
161
|
+
<div class="col col-auto toggle-block-when-on">
|
162
|
+
<button class="btn btn-outline-secondary js-toggle-trigger">Hide</button>
|
163
|
+
</div>
|
164
|
+
<% end %>
|
155
165
|
</div>
|
156
166
|
</div>
|
157
167
|
|
158
|
-
|
159
|
-
<div class="
|
160
|
-
<div class="
|
161
|
-
<
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
<
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
<% unless Flipper::UI.configuration.read_only %>
|
169
|
+
<div class="card-body border-bottom toggle-block-when-on bg-lightest">
|
170
|
+
<div class="row">
|
171
|
+
<div class="col-12 col-md-6 mb-3 mb-md-0">
|
172
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/percentage_of_actors" method="post">
|
173
|
+
<%== csrf_input_tag %>
|
174
|
+
<div class="btn-group">
|
175
|
+
<% @percentages.each do |number| %>
|
176
|
+
<input type="submit" name="value" value="<%= number %>%" class="btn btn-light btn-sm" <% if number == @feature.percentage_of_actors_value %>disabled<% end %>>
|
177
|
+
<% end %>
|
178
|
+
</div>
|
179
|
+
</form>
|
180
|
+
</div>
|
181
|
+
<div class="col-12 col-md-6">
|
182
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/percentage_of_actors" method="post" class="form-inline">
|
183
|
+
<%== csrf_input_tag %>
|
184
|
+
<input type="text" name="value" <% if @feature.percentage_of_actors_value > 0 %>value="<%= @feature.percentage_of_actors_value %>"<% end %> placeholder="custom (26, 32, etc.)" class="form-control form-control-sm mr-sm-2 mb-2 mb-md-0">
|
185
|
+
<input type="submit" name="action" value="Save" class="btn btn-light btn-sm">
|
186
|
+
</form>
|
187
|
+
</div>
|
176
188
|
</div>
|
177
189
|
</div>
|
178
|
-
|
190
|
+
<% end %>
|
179
191
|
</div>
|
180
192
|
|
181
193
|
<%# % of Time %>
|
@@ -185,36 +197,40 @@
|
|
185
197
|
<div class="col col-mr-auto">
|
186
198
|
<h6 class="m-0"><strong class="<%= "text-muted" unless @feature.percentage_of_time_value > 0 %>">Enabled for <%= @feature.percentage_of_time_value %>% of time</strong></h6>
|
187
199
|
</div>
|
188
|
-
|
189
|
-
<
|
190
|
-
|
191
|
-
|
192
|
-
<
|
193
|
-
|
200
|
+
<% unless Flipper::UI.configuration.read_only %>
|
201
|
+
<div class="col col-auto toggle-block-when-off">
|
202
|
+
<button class="btn btn-outline-secondary js-toggle-trigger">Edit</button>
|
203
|
+
</div>
|
204
|
+
<div class="col col-auto toggle-block-when-on">
|
205
|
+
<button class="btn btn-outline-secondary js-toggle-trigger">Hide</button>
|
206
|
+
</div>
|
207
|
+
<% end %>
|
194
208
|
</div>
|
195
209
|
</div>
|
196
210
|
|
197
|
-
|
198
|
-
<div class="
|
199
|
-
<div class="
|
200
|
-
<
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
<
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
211
|
+
<% unless Flipper::UI.configuration.read_only %>
|
212
|
+
<div class="card-body border-bottom toggle-block-when-on bg-lightest">
|
213
|
+
<div class="row">
|
214
|
+
<div class="col-12 col-md-6 mb-3 mb-md-0">
|
215
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/percentage_of_time" method="post">
|
216
|
+
<%== csrf_input_tag %>
|
217
|
+
<div class="btn-group">
|
218
|
+
<% @percentages.each do |number| %>
|
219
|
+
<input type="submit" name="value" value="<%= number %>%" class="btn btn-light btn-sm" <% if number == @feature.percentage_of_time_value %>disabled<% end %>>
|
220
|
+
<% end %>
|
221
|
+
</div>
|
222
|
+
</form>
|
223
|
+
</div>
|
224
|
+
<div class="col-12 col-md-6">
|
225
|
+
<form action="<%= script_name %>/features/<%= @feature.key %>/percentage_of_time" method="post" class="form-inline">
|
226
|
+
<%== csrf_input_tag %>
|
227
|
+
<input type="text" name="value" <% if @feature.percentage_of_time_value > 0 %>value="<%= @feature.percentage_of_time_value %>"<% end %> placeholder="custom (26, 32, etc.)" class="form-control form-control-sm mr-sm-2 mb-2 mb-md-0">
|
228
|
+
<input type="submit" name="action" value="Save" class="btn btn-light btn-sm">
|
229
|
+
</form>
|
230
|
+
</div>
|
215
231
|
</div>
|
216
232
|
</div>
|
217
|
-
|
233
|
+
<% end %>
|
218
234
|
</div>
|
219
235
|
<% end %>
|
220
236
|
|
@@ -225,8 +241,14 @@
|
|
225
241
|
<div class="row">
|
226
242
|
<% unless @feature.boolean_value %>
|
227
243
|
<div class="col">
|
228
|
-
<button type="submit" name="action" value="Enable" <% if Flipper::UI.configuration.confirm_fully_enable %>id="enable_feature__button"<% end %> class="btn btn-outline-success btn-block"
|
229
|
-
<span class="d-block" data-toggle="tooltip"
|
244
|
+
<button type="submit" name="action" value="Enable" <% if Flipper::UI.configuration.confirm_fully_enable %>id="enable_feature__button"<% end %> class="btn btn-outline-success btn-block" <% if Flipper::UI.configuration.read_only %>disabled<% end %>>
|
245
|
+
<span class="d-block" data-toggle="tooltip"
|
246
|
+
<% if Flipper::UI.configuration.read_only %>
|
247
|
+
title="Fully enable is not allowed in read only mode."
|
248
|
+
<% else %>
|
249
|
+
title="Enable for everyone"
|
250
|
+
<% end %>
|
251
|
+
>
|
230
252
|
Fully Enable
|
231
253
|
</span>
|
232
254
|
</button>
|
@@ -235,8 +257,13 @@
|
|
235
257
|
|
236
258
|
<% unless @feature.off? %>
|
237
259
|
<div class="col">
|
238
|
-
<button type="submit" name="action" value="Disable" class="btn btn-outline-danger btn-block"
|
239
|
-
<span class="d-block" data-toggle="tooltip"
|
260
|
+
<button type="submit" name="action" value="Disable" class="btn btn-outline-danger btn-block" <% if Flipper::UI.configuration.read_only %>disabled<% end %>>
|
261
|
+
<span class="d-block" data-toggle="tooltip"
|
262
|
+
<% if Flipper::UI.configuration.read_only %>
|
263
|
+
title="Disable is not allowed in read only mode.">
|
264
|
+
<% else %>
|
265
|
+
title="Disable for everyone by clearing all percentages, groups and actors.">
|
266
|
+
<% end %>
|
240
267
|
Disable
|
241
268
|
</span>
|
242
269
|
</button>
|
@@ -249,7 +276,7 @@
|
|
249
276
|
</div>
|
250
277
|
</div>
|
251
278
|
|
252
|
-
<% if Flipper::UI.configuration.feature_removal_enabled %>
|
279
|
+
<% if !Flipper::UI.configuration.read_only && Flipper::UI.configuration.feature_removal_enabled %>
|
253
280
|
<div class="row">
|
254
281
|
<div class="col">
|
255
282
|
<div class="card border">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<% if Flipper::UI.configuration.fun %>
|
4
4
|
<h4>But I've got a blank space baby...</h4>
|
5
5
|
<p>And I'll flip your features.</p>
|
6
|
-
<%- if Flipper::UI.configuration.feature_creation_enabled -%>
|
6
|
+
<%- if !Flipper::UI.configuration.read_only && Flipper::UI.configuration.feature_creation_enabled -%>
|
7
7
|
<p>
|
8
8
|
<a class="btn btn-primary btn-sm" href="<%= script_name %>/features/new">Add Feature</a>
|
9
9
|
</p>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<% else %>
|
12
12
|
<h4>Getting Started</h4>
|
13
13
|
<p class="mb-1">You have not added any features to configure yet.</p>
|
14
|
-
<%- if Flipper::UI.configuration.feature_creation_enabled -%>
|
14
|
+
<%- if !Flipper::UI.configuration.read_only && Flipper::UI.configuration.feature_creation_enabled -%>
|
15
15
|
<p class="mt-2">
|
16
16
|
<a class="btn btn-primary btn-sm" href="<%= script_name %>/features/new">Add Feature</a>
|
17
17
|
</p>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<% else %>
|
27
27
|
<div class="card">
|
28
28
|
<div class="card-header">
|
29
|
-
<%- if Flipper::UI.configuration.feature_creation_enabled -%>
|
29
|
+
<%- if !Flipper::UI.configuration.read_only && Flipper::UI.configuration.feature_creation_enabled -%>
|
30
30
|
<div class="float-right">
|
31
31
|
<a class="btn btn-primary btn-sm" href="<%= script_name %>/features/new">Add Feature</a>
|
32
32
|
</div>
|
data/lib/flipper/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipper-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.25.
|
4
|
+
version: 0.25.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -56,14 +56,14 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.25.
|
59
|
+
version: 0.25.4
|
60
60
|
type: :runtime
|
61
61
|
prerelease: false
|
62
62
|
version_requirements: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.25.
|
66
|
+
version: 0.25.4
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: erubi
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +107,7 @@ extra_rdoc_files: []
|
|
107
107
|
files:
|
108
108
|
- examples/ui/authorization.ru
|
109
109
|
- examples/ui/basic.ru
|
110
|
+
- examples/ui/read_only.ru
|
110
111
|
- flipper-ui.gemspec
|
111
112
|
- lib/flipper-ui.rb
|
112
113
|
- lib/flipper/ui.rb
|
@@ -141,6 +142,7 @@ files:
|
|
141
142
|
- lib/flipper/ui/views/feature_removal_disabled.erb
|
142
143
|
- lib/flipper/ui/views/features.erb
|
143
144
|
- lib/flipper/ui/views/layout.erb
|
145
|
+
- lib/flipper/ui/views/read_only.erb
|
144
146
|
- lib/flipper/version.rb
|
145
147
|
- spec/flipper/ui/action_spec.rb
|
146
148
|
- spec/flipper/ui/actions/actors_gate_spec.rb
|