rollout-ui 0.2.0 → 0.3.0
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/README.md +9 -0
- data/lib/rollout/ui/helpers.rb +24 -0
- data/lib/rollout/ui/version.rb +1 -1
- data/lib/rollout/ui/web.rb +15 -3
- data/rollout-ui.gemspec +4 -1
- metadata +46 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46ae18c9e6daeba114f85ef7608108c76095761a97446d570da01f7412f80183
|
4
|
+
data.tar.gz: f38e59a3c048cd04074b9d85bb708c1aa8d07d6b94c1b1ba0e66bf616d0fdae9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fa46d7b3ed9372bd46059d5f0513d8ba18964c97787ad8b552df5e82f4ce2a378d31d6407d095d586df948897c07dd890c99359ac548624f10c83308fcfc368
|
7
|
+
data.tar.gz: 9286a654951b7f8462bd8e8742d351f23dda33afe8097245bb339ad15314ccafe8a84614448c8c2c393fdf4cfc721f533d600b0ebd11d051469394895e4fa072
|
data/README.md
CHANGED
@@ -58,6 +58,15 @@ Rails.application.routes.draw do
|
|
58
58
|
end
|
59
59
|
```
|
60
60
|
|
61
|
+
## API Endpoints
|
62
|
+
|
63
|
+
The index and show routes can also respond with JSON data instead of HTML when the request's `Accept` header is
|
64
|
+
`application/json`
|
65
|
+
|
66
|
+
The index route also accepts query parameters to filter by user or group:
|
67
|
+
`/admin/rollout?user=someone`
|
68
|
+
`/admin/rollout?group=developers`
|
69
|
+
|
61
70
|
## Logging
|
62
71
|
|
63
72
|
To get the most out of **rollout-ui**, we recommend you to turn on logging
|
data/lib/rollout/ui/helpers.rb
CHANGED
@@ -84,5 +84,29 @@ module Rollout::UI
|
|
84
84
|
value
|
85
85
|
end
|
86
86
|
end
|
87
|
+
|
88
|
+
def json_request?
|
89
|
+
request.env['HTTP_ACCEPT'] == 'application/json'
|
90
|
+
end
|
91
|
+
|
92
|
+
# Filters features by user and group if those params are provided
|
93
|
+
def filtered_features(rollout, feature_names)
|
94
|
+
feature_names.select do |feature_name|
|
95
|
+
feature = rollout.get(feature_name)
|
96
|
+
user_match = params[:user].nil? || feature.users.member?(params[:user])
|
97
|
+
group_match = params[:group].nil? || feature.groups.member?(params[:group].to_sym)
|
98
|
+
user_match && group_match
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# Returns a hash of feature data to be rendered as json
|
103
|
+
def feature_to_hash(feature)
|
104
|
+
{
|
105
|
+
data: feature.data,
|
106
|
+
groups: feature.groups,
|
107
|
+
name: feature.name,
|
108
|
+
percentage: feature.percentage
|
109
|
+
}
|
110
|
+
end
|
87
111
|
end
|
88
112
|
end
|
data/lib/rollout/ui/version.rb
CHANGED
data/lib/rollout/ui/web.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "sinatra"
|
2
|
+
require "sinatra/json"
|
2
3
|
require "rollout"
|
3
4
|
|
4
5
|
require "rollout/ui/version"
|
@@ -15,8 +16,15 @@ module Rollout::UI
|
|
15
16
|
get '/' do
|
16
17
|
@rollout = config.get(:instance)
|
17
18
|
@features = @rollout.features.sort_by(&:downcase)
|
18
|
-
|
19
|
-
|
19
|
+
if json_request?
|
20
|
+
json(
|
21
|
+
filtered_features(@rollout, @features).map do |feature|
|
22
|
+
feature_to_hash(@rollout.get(feature))
|
23
|
+
end
|
24
|
+
)
|
25
|
+
else
|
26
|
+
slim :'features/index'
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
get '/features/new' do
|
@@ -31,7 +39,11 @@ module Rollout::UI
|
|
31
39
|
@rollout = config.get(:instance)
|
32
40
|
@feature = @rollout.get(params[:feature_name])
|
33
41
|
|
34
|
-
|
42
|
+
if json_request?
|
43
|
+
json(feature_to_hash(@feature))
|
44
|
+
else
|
45
|
+
slim :'features/show'
|
46
|
+
end
|
35
47
|
end
|
36
48
|
|
37
49
|
post '/features/:feature_name' do
|
data/rollout-ui.gemspec
CHANGED
@@ -24,10 +24,13 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.add_dependency 'rollout', '~> 2.5'
|
26
26
|
spec.add_dependency 'sinatra', '~> 2.0'
|
27
|
+
spec.add_dependency 'sinatra-contrib', '~> 2.1'
|
27
28
|
spec.add_dependency 'slim', '~> 4.0'
|
28
29
|
|
29
|
-
spec.add_development_dependency 'bundler', '
|
30
|
+
spec.add_development_dependency 'bundler', '>= 1.17'
|
30
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
31
32
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
32
33
|
spec.add_development_dependency 'rerun', '~> 0.13'
|
34
|
+
spec.add_development_dependency 'rack-test'
|
35
|
+
spec.add_development_dependency 'pry'
|
33
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollout-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FetLife
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rollout
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sinatra-contrib
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: slim
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,14 +70,14 @@ dependencies:
|
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '1.17'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '1.17'
|
69
83
|
- !ruby/object:Gem::Dependency
|
@@ -108,6 +122,34 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0.13'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rack-test
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pry
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
111
153
|
description: ''
|
112
154
|
email:
|
113
155
|
- dev@fetlife.com
|