featury 1.0.0.rc25 → 1.0.0.rc26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9aaf473cce229df8453a2a3aade938b73dca43bf5d2d94ad986e45e0e7055dba
4
- data.tar.gz: fd1df43ff7f0e206edd62b20365ad4a99151144f286ecfe237c98377484e007c
3
+ metadata.gz: b1642cef21dfc3b87b5dfc732bb40732d9b9ee44dcdc02181fbf51c2c999064f
4
+ data.tar.gz: c2f14a97ff82cbb66bd2c4408ed75af2fe3df5e2a3e7b0a3a9d3021539cf210c
5
5
  SHA512:
6
- metadata.gz: c3e509c946798efa61ed4b096455a0d8136e24690400f4420d8325fafcd4b3f3a360ef678258b98939d9ecf04a1aa1ebafc2cbe937cc1ee92d1ca45ae381ebe9
7
- data.tar.gz: 60593252eb4ca349300bd7d4bc81c9d1ada2f6133dc41c5b67ad3cfbc1837eef5049e62afb1fd855514538877b338b181991f6ec0587e7e05606b28e5808f337
6
+ metadata.gz: 6e3f684c65f99369730b5337a0c77d2dbba512c9b61ac75040a27f4d4c2fd72e5d945a298057a1fb72f230bee033c2a61f5a75fb94a864fa8bc17685c9633ec8
7
+ data.tar.gz: ad69be864c5751a156b629dc658d8e81ff3d0c3c5f4eb31fdb56ac8d2aa7a6908cf5420927355b8f565dfae678d4b55ceffda9805b6fa87a3ef270d1c495dbe7
data/README.md CHANGED
@@ -124,6 +124,12 @@ If a resource needs to be conveyed as a feature flag option, utilize the `option
124
124
  resource :user, type: User, option: true
125
125
  ```
126
126
 
127
+ To call a feature without passing a resource, use the `required: false` option (e.g., for managing the global state of the feature).
128
+
129
+ ```ruby
130
+ resource :user, type: User, option: true, required: false
131
+ ```
132
+
127
133
  To transfer a resource to a nested group, utilize the `nested` option:
128
134
 
129
135
  ```ruby
@@ -21,12 +21,12 @@ module Featury
21
21
  @model_class.const_set(Builder::SERVICE_CLASS_NAME, class_sample)
22
22
  end
23
23
 
24
- def create_service_class # rubocop:disable Metrics/MethodLength, Metrics/AbcSize,Metrics/CyclomaticComplexity
24
+ def create_service_class # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
25
25
  collection_of_resources = @collection_of_resources
26
26
 
27
27
  Class.new(Featury::Service::Builder) do
28
28
  collection_of_resources.each do |resource|
29
- input resource.name, **resource.options
29
+ input resource.name, required: resource.required?, **resource.options
30
30
  end
31
31
 
32
32
  input :action, type: Featury::Actions::Action
@@ -75,19 +75,23 @@ module Featury
75
75
  end
76
76
  end
77
77
 
78
- def features_are_true
78
+ def features_are_true # rubocop:disable Metrics/AbcSize
79
79
  options = inputs.collection_of_resources.only_option.to_h do |resource|
80
80
  [resource.name, inputs.public_send(resource.name)]
81
81
  end
82
82
 
83
+ options = options.reject { |_, v| v.blank? }
84
+
83
85
  inputs.action.block.call(features: inputs.collection_of_features.names, **options)
84
86
  end
85
87
 
86
- def groups_are_true
88
+ def groups_are_true # rubocop:disable Metrics/AbcSize
87
89
  arguments = inputs.collection_of_resources.only_nested.to_h do |resource|
88
90
  [resource.name, inputs.public_send(resource.name)]
89
91
  end
90
92
 
93
+ arguments = arguments.reject { |_, v| v.blank? }
94
+
91
95
  inputs.collection_of_groups.all? do |group|
92
96
  group.group_class.public_send(inputs.action.name, **arguments)
93
97
  end
@@ -8,8 +8,9 @@ module Featury
8
8
  def initialize(name, **options)
9
9
  @name = name
10
10
 
11
- @nested = options.delete(:nested) || false
12
- @option = options.delete(:option) || false
11
+ @nested = options.delete(:nested) { false }
12
+ @option = options.delete(:option) { false }
13
+ @required = options.delete(:required) { true }
13
14
 
14
15
  @options = options
15
16
  end
@@ -21,6 +22,10 @@ module Featury
21
22
  def option?
22
23
  @option
23
24
  end
25
+
26
+ def required?
27
+ @required
28
+ end
24
29
  end
25
30
  end
26
31
  end
@@ -5,7 +5,7 @@ module Featury
5
5
  MAJOR = 1
6
6
  MINOR = 0
7
7
  PATCH = 0
8
- PRE = "rc25"
8
+ PRE = "rc26"
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join(".")
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: featury
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc25
4
+ version: 1.0.0.rc26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sokolov