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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -7
  3. data/Rakefile +3 -3
  4. data/app/assets/images/sail/angle-left.svg +1 -1
  5. data/app/assets/images/sail/angle-right.svg +1 -1
  6. data/app/assets/images/sail/checkmark.svg +1 -0
  7. data/app/assets/images/sail/cog.svg +1 -1
  8. data/app/assets/images/sail/error.svg +1 -0
  9. data/app/assets/images/sail/reset.svg +1 -0
  10. data/app/assets/images/sail/sort.svg +1 -1
  11. data/app/assets/javascripts/sail/{application.js.erb → application.js} +1 -10
  12. data/app/assets/javascripts/{settings.js.erb → sail/settings.js} +16 -3
  13. data/app/assets/stylesheets/sail/application.css.erb +419 -0
  14. data/app/assets/stylesheets/sail/settings.css +555 -0
  15. data/app/controllers/sail/settings_controller.rb +2 -13
  16. data/app/helpers/sail/application_helper.rb +4 -0
  17. data/app/models/sail/setting.rb +4 -8
  18. data/app/views/layouts/sail/application.html.erb +2 -6
  19. data/app/views/sail/profiles/_profile.html.erb +29 -17
  20. data/app/views/sail/settings/_guide_modal.html.erb +2 -2
  21. data/app/views/sail/settings/_setting.html.erb +80 -50
  22. data/app/views/sail/settings/index.html.erb +21 -17
  23. data/app/views/sail/settings/update.js.erb +6 -2
  24. data/config/locales/en.yml +1 -4
  25. data/lib/generators/sail/install/install_generator.rb +5 -1
  26. data/lib/generators/sail/install/templates/sail.yml.tt +5 -0
  27. data/lib/generators/sail/update/update_generator.rb +1 -1
  28. data/lib/sail.rb +3 -3
  29. data/lib/sail/constant_collection.rb +2 -2
  30. data/lib/sail/engine.rb +3 -3
  31. data/lib/sail/graphql.rb +43 -0
  32. data/lib/sail/instrumenter.rb +1 -1
  33. data/lib/sail/mutations.rb +49 -0
  34. data/lib/sail/types.rb +1 -0
  35. data/lib/sail/types/set.rb +20 -0
  36. data/lib/sail/version.rb +1 -1
  37. metadata +26 -102
  38. data/app/assets/images/sail/refresh.svg +0 -1
  39. data/app/assets/stylesheets/sail/_colors.scss +0 -9
  40. data/app/assets/stylesheets/sail/_shared.scss +0 -52
  41. data/app/assets/stylesheets/sail/application.scss +0 -351
  42. data/app/assets/stylesheets/sail/settings.scss +0 -422
  43. data/app/views/sail/settings/_setting_minimal.html.erb +0 -6
@@ -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 = 8
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
@@ -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/refresh.svg sail/sort.svg sail/angle-left.svg
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
@@ -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:
@@ -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] }.reduce(:+)
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:
@@ -20,5 +20,6 @@ module Sail
20
20
  autoload :String, "sail/types/string"
21
21
  autoload :Throttle, "sail/types/throttle"
22
22
  autoload :Uri, "sail/types/uri"
23
+ autoload :Set, "sail/types/set"
23
24
  end
24
25
  end
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sail
4
- VERSION = "3.2.3"
4
+ VERSION = "3.5.1"
5
5
  end
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.2.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: 2019-09-06 00:00:00.000000000 Z
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: '0'
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: '0'
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: rails_best_practices
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-rails
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: rspec-retry
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.17.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.17.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/refresh.svg
269
+ - app/assets/images/sail/reset.svg
338
270
  - app/assets/images/sail/sort.svg
339
- - app/assets/javascripts/sail/application.js.erb
340
- - app/assets/javascripts/settings.js.erb
341
- - app/assets/stylesheets/sail/_colors.scss
342
- - app/assets/stylesheets/sail/_shared.scss
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.3.0
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.0.6
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.