sail 3.2.3 → 3.5.1
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 +48 -7
- data/Rakefile +3 -3
- data/app/assets/images/sail/angle-left.svg +1 -1
- data/app/assets/images/sail/angle-right.svg +1 -1
- data/app/assets/images/sail/checkmark.svg +1 -0
- data/app/assets/images/sail/cog.svg +1 -1
- data/app/assets/images/sail/error.svg +1 -0
- data/app/assets/images/sail/reset.svg +1 -0
- data/app/assets/images/sail/sort.svg +1 -1
- data/app/assets/javascripts/sail/{application.js.erb → application.js} +1 -10
- data/app/assets/javascripts/{settings.js.erb → sail/settings.js} +16 -3
- data/app/assets/stylesheets/sail/application.css.erb +419 -0
- data/app/assets/stylesheets/sail/settings.css +555 -0
- data/app/controllers/sail/settings_controller.rb +2 -13
- data/app/helpers/sail/application_helper.rb +4 -0
- data/app/models/sail/setting.rb +4 -8
- data/app/views/layouts/sail/application.html.erb +2 -6
- data/app/views/sail/profiles/_profile.html.erb +29 -17
- data/app/views/sail/settings/_guide_modal.html.erb +2 -2
- data/app/views/sail/settings/_setting.html.erb +80 -50
- data/app/views/sail/settings/index.html.erb +21 -17
- data/app/views/sail/settings/update.js.erb +6 -2
- data/config/locales/en.yml +1 -4
- data/lib/generators/sail/install/install_generator.rb +5 -1
- data/lib/generators/sail/install/templates/sail.yml.tt +5 -0
- data/lib/generators/sail/update/update_generator.rb +1 -1
- data/lib/sail.rb +3 -3
- data/lib/sail/constant_collection.rb +2 -2
- data/lib/sail/engine.rb +3 -3
- data/lib/sail/graphql.rb +43 -0
- data/lib/sail/instrumenter.rb +1 -1
- data/lib/sail/mutations.rb +49 -0
- data/lib/sail/types.rb +1 -0
- data/lib/sail/types/set.rb +20 -0
- data/lib/sail/version.rb +1 -1
- metadata +26 -102
- data/app/assets/images/sail/refresh.svg +0 -1
- data/app/assets/stylesheets/sail/_colors.scss +0 -9
- data/app/assets/stylesheets/sail/_shared.scss +0 -52
- data/app/assets/stylesheets/sail/application.scss +0 -351
- data/app/assets/stylesheets/sail/settings.scss +0 -422
- data/app/views/sail/settings/_setting_minimal.html.erb +0 -6
data/lib/sail.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "sail/engine"
|
4
|
-
require "sail/constant_collection"
|
5
|
-
require "sail/configuration"
|
6
|
-
require "sail/instrumenter"
|
7
4
|
require "true_class"
|
8
5
|
require "false_class"
|
9
6
|
|
10
7
|
module Sail # :nodoc:
|
8
|
+
autoload :ConstantCollection, "sail/constant_collection"
|
9
|
+
autoload :Configuration, "sail/configuration"
|
11
10
|
autoload :Instrumenter, "sail/instrumenter"
|
12
11
|
autoload :Types, "sail/types"
|
12
|
+
autoload :Graphql, "sail/graphql"
|
13
13
|
|
14
14
|
class << self
|
15
15
|
attr_writer :configuration
|
@@ -17,8 +17,8 @@ module Sail
|
|
17
17
|
STALE = "stale"
|
18
18
|
RECENT = "recent"
|
19
19
|
FIELDS_FOR_SORT = %w[name updated_at cast_type group].freeze
|
20
|
-
SETTINGS_PER_PAGE =
|
21
|
-
MINIMAL_SETTINGS_PER_PAGE = 24
|
20
|
+
SETTINGS_PER_PAGE = 20
|
22
21
|
INPUT_DATE_FORMAT = "%Y-%m-%dT%H:%m:%S"
|
22
|
+
MAX_PAGES = 5
|
23
23
|
end
|
24
24
|
end
|
data/lib/sail/engine.rb
CHANGED
@@ -5,7 +5,6 @@ module Sail
|
|
5
5
|
# Defines initializers and
|
6
6
|
# after initialize hooks
|
7
7
|
class Engine < ::Rails::Engine
|
8
|
-
require "jquery-rails" if Rails::VERSION::MAJOR < 5
|
9
8
|
require "sprockets/railtie"
|
10
9
|
isolate_namespace Sail
|
11
10
|
|
@@ -24,8 +23,9 @@ module Sail
|
|
24
23
|
config.middleware.use Rack::ETag
|
25
24
|
|
26
25
|
initializer "sail.assets.precompile" do |app|
|
27
|
-
app.config.assets.precompile += %w[sail/
|
28
|
-
sail/angle-right.svg sail/link.svg sail/cog.svg
|
26
|
+
app.config.assets.precompile += %w[sail/reset.svg sail/sort.svg sail/angle-left.svg
|
27
|
+
sail/angle-right.svg sail/link.svg sail/cog.svg sail/checkmark.svg
|
28
|
+
sail/error.svg sail/application.css sail/application.js]
|
29
29
|
end
|
30
30
|
|
31
31
|
initializer "sail" do
|
data/lib/sail/graphql.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Sail
|
5
|
+
# Graphql
|
6
|
+
#
|
7
|
+
# Module to include type definitions
|
8
|
+
# for GraphQL APIs.
|
9
|
+
module Graphql
|
10
|
+
autoload :Mutations, "sail/mutations"
|
11
|
+
|
12
|
+
module Types # :nodoc:
|
13
|
+
extend ActiveSupport::Concern
|
14
|
+
|
15
|
+
included do
|
16
|
+
field :sail_get, ::GraphQL::Types::JSON, null: true do
|
17
|
+
description "Returns the value for a given setting."
|
18
|
+
argument :name, String, required: true, description: "The setting's name."
|
19
|
+
end
|
20
|
+
|
21
|
+
field :sail_switcher, ::GraphQL::Types::JSON, null: true do
|
22
|
+
description "Switches between the positive or negative setting based on the throttle."
|
23
|
+
argument :positive, String, required: true, description: "The setting's name if the throttle is bigger than the desired amount."
|
24
|
+
argument :negative, String, required: true, description: "The setting's name if the throttle is smaller than the desired amount."
|
25
|
+
argument :throttled_by, String, required: true, description: "The throttle setting's name."
|
26
|
+
end
|
27
|
+
|
28
|
+
def sail_get(name:)
|
29
|
+
Sail.get(name)
|
30
|
+
end
|
31
|
+
|
32
|
+
def sail_switcher(positive:, negative:, throttled_by:)
|
33
|
+
Sail.switcher(
|
34
|
+
positive: positive,
|
35
|
+
negative: negative,
|
36
|
+
throttled_by: throttled_by
|
37
|
+
)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
# :nocov:
|
data/lib/sail/instrumenter.rb
CHANGED
@@ -59,7 +59,7 @@ module Sail
|
|
59
59
|
def relative_usage_of(setting_name)
|
60
60
|
return 0.0 if @statistics[:settings].empty?
|
61
61
|
|
62
|
-
(100.0 * self[setting_name][:usages]) / @statistics[:settings].map { |_, entry| entry[:usages] }.
|
62
|
+
(100.0 * self[setting_name][:usages]) / @statistics[:settings].map { |_, entry| entry[:usages] }.sum
|
63
63
|
end
|
64
64
|
|
65
65
|
# increment_failure_of
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Sail
|
5
|
+
module Graphql
|
6
|
+
module Mutations # :nodoc:
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
field :sail_set, mutation: SailSet do
|
11
|
+
description "Set the value for a setting."
|
12
|
+
argument :name, String, required: true
|
13
|
+
argument :value, String, required: true
|
14
|
+
end
|
15
|
+
|
16
|
+
field :sail_profile_switch, mutation: SailProfileSwitch do
|
17
|
+
description "Switches to the chosen profile."
|
18
|
+
argument :name, String, required: true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class SailSet < ::GraphQL::Schema::Mutation # :nodoc:
|
23
|
+
argument :name, String, required: true
|
24
|
+
argument :value, String, required: true
|
25
|
+
|
26
|
+
field :success, Boolean, null: false
|
27
|
+
|
28
|
+
def resolve(name:, value:)
|
29
|
+
_, success = Sail.set(name, value)
|
30
|
+
{ success: success }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class SailProfileSwitch < ::GraphQL::Schema::Mutation # :nodoc:
|
35
|
+
argument :name, String, required: true
|
36
|
+
|
37
|
+
field :success, Boolean, null: false
|
38
|
+
|
39
|
+
def resolve(name:)
|
40
|
+
success = Profile.exists?(name: name)
|
41
|
+
Profile.switch(name)
|
42
|
+
|
43
|
+
{ success: success }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
# :nocov:
|
data/lib/sail/types.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Sail
|
4
|
+
module Types
|
5
|
+
# Set
|
6
|
+
#
|
7
|
+
# This type allows defining a set
|
8
|
+
# using a string and a separator
|
9
|
+
# (defined in the configuration).
|
10
|
+
class Set < Type
|
11
|
+
def to_value
|
12
|
+
::Set[*@setting.value.split(Sail.configuration.array_separator)]
|
13
|
+
end
|
14
|
+
|
15
|
+
def from(value)
|
16
|
+
value.is_a?(::String) ? value : value.join(Sail.configuration.array_separator)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/sail/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vinicius Stock
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: sassc-rails
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: fugit
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,34 +24,20 @@ dependencies:
|
|
38
24
|
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: jquery-rails
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: rails
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
58
30
|
requirements:
|
59
31
|
- - ">="
|
60
32
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
33
|
+
version: 5.0.0
|
62
34
|
type: :runtime
|
63
35
|
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - ">="
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
40
|
+
version: 5.0.0
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: brakeman
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,20 +66,6 @@ dependencies:
|
|
94
66
|
- - ">="
|
95
67
|
- !ruby/object:Gem::Version
|
96
68
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: byebug
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
69
|
- !ruby/object:Gem::Dependency
|
112
70
|
name: capybara
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,20 +94,6 @@ dependencies:
|
|
136
94
|
- - ">="
|
137
95
|
- !ruby/object:Gem::Version
|
138
96
|
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: codeclimate-test-reporter
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '1.0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '1.0'
|
153
97
|
- !ruby/object:Gem::Dependency
|
154
98
|
name: database_cleaner
|
155
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,20 +108,6 @@ dependencies:
|
|
164
108
|
- - ">="
|
165
109
|
- !ruby/object:Gem::Version
|
166
110
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: jquery-rails
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
111
|
- !ruby/object:Gem::Dependency
|
182
112
|
name: rack-mini-profiler
|
183
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +123,7 @@ dependencies:
|
|
193
123
|
- !ruby/object:Gem::Version
|
194
124
|
version: '0'
|
195
125
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
126
|
+
name: rspec-rails
|
197
127
|
requirement: !ruby/object:Gem::Requirement
|
198
128
|
requirements:
|
199
129
|
- - ">="
|
@@ -207,7 +137,7 @@ dependencies:
|
|
207
137
|
- !ruby/object:Gem::Version
|
208
138
|
version: '0'
|
209
139
|
- !ruby/object:Gem::Dependency
|
210
|
-
name: rspec-
|
140
|
+
name: rspec-retry
|
211
141
|
requirement: !ruby/object:Gem::Requirement
|
212
142
|
requirements:
|
213
143
|
- - ">="
|
@@ -221,7 +151,7 @@ dependencies:
|
|
221
151
|
- !ruby/object:Gem::Version
|
222
152
|
version: '0'
|
223
153
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
154
|
+
name: rubocop
|
225
155
|
requirement: !ruby/object:Gem::Requirement
|
226
156
|
requirements:
|
227
157
|
- - ">="
|
@@ -235,7 +165,7 @@ dependencies:
|
|
235
165
|
- !ruby/object:Gem::Version
|
236
166
|
version: '0'
|
237
167
|
- !ruby/object:Gem::Dependency
|
238
|
-
name: rubocop
|
168
|
+
name: rubocop-packaging
|
239
169
|
requirement: !ruby/object:Gem::Requirement
|
240
170
|
requirements:
|
241
171
|
- - ">="
|
@@ -282,14 +212,14 @@ dependencies:
|
|
282
212
|
requirements:
|
283
213
|
- - "~>"
|
284
214
|
- !ruby/object:Gem::Version
|
285
|
-
version: 0.
|
215
|
+
version: 0.19.0
|
286
216
|
type: :development
|
287
217
|
prerelease: false
|
288
218
|
version_requirements: !ruby/object:Gem::Requirement
|
289
219
|
requirements:
|
290
220
|
- - "~>"
|
291
221
|
- !ruby/object:Gem::Version
|
292
|
-
version: 0.
|
222
|
+
version: 0.19.0
|
293
223
|
- !ruby/object:Gem::Dependency
|
294
224
|
name: sqlite3
|
295
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -332,16 +262,16 @@ files:
|
|
332
262
|
- app/assets/config/sail_manifest.js
|
333
263
|
- app/assets/images/sail/angle-left.svg
|
334
264
|
- app/assets/images/sail/angle-right.svg
|
265
|
+
- app/assets/images/sail/checkmark.svg
|
335
266
|
- app/assets/images/sail/cog.svg
|
267
|
+
- app/assets/images/sail/error.svg
|
336
268
|
- app/assets/images/sail/link.svg
|
337
|
-
- app/assets/images/sail/
|
269
|
+
- app/assets/images/sail/reset.svg
|
338
270
|
- app/assets/images/sail/sort.svg
|
339
|
-
- app/assets/javascripts/sail/application.js
|
340
|
-
- app/assets/javascripts/settings.js
|
341
|
-
- app/assets/stylesheets/sail/
|
342
|
-
- app/assets/stylesheets/sail/
|
343
|
-
- app/assets/stylesheets/sail/application.scss
|
344
|
-
- app/assets/stylesheets/sail/settings.scss
|
271
|
+
- app/assets/javascripts/sail/application.js
|
272
|
+
- app/assets/javascripts/sail/settings.js
|
273
|
+
- app/assets/stylesheets/sail/application.css.erb
|
274
|
+
- app/assets/stylesheets/sail/settings.css
|
345
275
|
- app/controllers/sail/application_controller.rb
|
346
276
|
- app/controllers/sail/profiles_controller.rb
|
347
277
|
- app/controllers/sail/settings_controller.rb
|
@@ -359,7 +289,6 @@ files:
|
|
359
289
|
- app/views/sail/settings/_profiles_modal.html.erb
|
360
290
|
- app/views/sail/settings/_search.html.erb
|
361
291
|
- app/views/sail/settings/_setting.html.erb
|
362
|
-
- app/views/sail/settings/_setting_minimal.html.erb
|
363
292
|
- app/views/sail/settings/_sort_menu.html.erb
|
364
293
|
- app/views/sail/settings/index.html.erb
|
365
294
|
- app/views/sail/settings/update.js.erb
|
@@ -369,13 +298,16 @@ files:
|
|
369
298
|
- lib/generators/sail/install/install_generator.rb
|
370
299
|
- lib/generators/sail/install/templates/create_sail_profiles.rb
|
371
300
|
- lib/generators/sail/install/templates/create_sail_settings.rb
|
301
|
+
- lib/generators/sail/install/templates/sail.yml.tt
|
372
302
|
- lib/generators/sail/update/templates/add_group_to_sail_settings.rb
|
373
303
|
- lib/generators/sail/update/update_generator.rb
|
374
304
|
- lib/sail.rb
|
375
305
|
- lib/sail/configuration.rb
|
376
306
|
- lib/sail/constant_collection.rb
|
377
307
|
- lib/sail/engine.rb
|
308
|
+
- lib/sail/graphql.rb
|
378
309
|
- lib/sail/instrumenter.rb
|
310
|
+
- lib/sail/mutations.rb
|
379
311
|
- lib/sail/railtie.rb
|
380
312
|
- lib/sail/types.rb
|
381
313
|
- lib/sail/types/ab_test.rb
|
@@ -388,6 +320,7 @@ files:
|
|
388
320
|
- lib/sail/types/locales.rb
|
389
321
|
- lib/sail/types/obj_model.rb
|
390
322
|
- lib/sail/types/range.rb
|
323
|
+
- lib/sail/types/set.rb
|
391
324
|
- lib/sail/types/string.rb
|
392
325
|
- lib/sail/types/throttle.rb
|
393
326
|
- lib/sail/types/type.rb
|
@@ -399,16 +332,7 @@ homepage: https://github.com/vinistock/sail
|
|
399
332
|
licenses:
|
400
333
|
- MIT
|
401
334
|
metadata: {}
|
402
|
-
post_install_message:
|
403
|
-
**************************************************************************
|
404
|
-
Sail 3.2.3!
|
405
|
-
|
406
|
-
For major version upgrades, check the CHANGELOG and run the updater to
|
407
|
-
create necessary migrations.
|
408
|
-
|
409
|
-
* https://github.com/vinistock/sail/blob/master/CHANGELOG.md
|
410
|
-
* rails g sail:update
|
411
|
-
**************************************************************************
|
335
|
+
post_install_message:
|
412
336
|
rdoc_options: []
|
413
337
|
require_paths:
|
414
338
|
- lib
|
@@ -416,15 +340,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
416
340
|
requirements:
|
417
341
|
- - ">="
|
418
342
|
- !ruby/object:Gem::Version
|
419
|
-
version: 2.
|
343
|
+
version: 2.5.0
|
420
344
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
421
345
|
requirements:
|
422
346
|
- - ">="
|
423
347
|
- !ruby/object:Gem::Version
|
424
348
|
version: '0'
|
425
349
|
requirements: []
|
426
|
-
rubygems_version: 3.
|
427
|
-
signing_key:
|
350
|
+
rubygems_version: 3.1.4
|
351
|
+
signing_key:
|
428
352
|
specification_version: 4
|
429
353
|
summary: Sail is a lightweight Rails engine that brings an admin panel for managing
|
430
354
|
configuration settings on a live Rails app.
|