featury 1.0.0.rc17 → 1.0.0.rc18
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 +12 -7
- data/lib/featury/actions/action.rb +13 -2
- data/lib/featury/actions/collection.rb +9 -1
- data/lib/featury/actions/dsl.rb +2 -1
- data/lib/featury/info/dsl.rb +1 -0
- data/lib/featury/info/result.rb +26 -2
- data/lib/featury/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 746a97b6b6689e1ac4a1dd05217229576b5ee8151890f077390f9050a2d9dd39
|
4
|
+
data.tar.gz: 0bff11a8adb7f725b4832660e8f3b61d434869ee1df27e2d07c2e01967dc11c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9836aa3917bcafcf4648707baa4a71bdd1a99a73464b007ee9ee805ddacf4b08af6174350ef168131aac254b601b4ed7a6a7f0a1261ea67b3a6c1f8ee6bfd7ac
|
7
|
+
data.tar.gz: ba036730e1e6e51b1574d01591ade4941430308713e0e300ac0dc19e01951b7bc75222a0bb3536facfca3f9644394edf3f642c27c87fed1c6ab06399b52282af
|
data/README.md
CHANGED
@@ -40,22 +40,26 @@ In such a scenario, the base class could potentially be structured as follows:
|
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
class ApplicationFeature < Featury::Base
|
43
|
-
action :enabled
|
43
|
+
action :enabled?, web: :main do |features:, **options|
|
44
44
|
features.all? { |feature| Flipper.enabled?(feature, *options.values) }
|
45
45
|
end
|
46
46
|
|
47
|
-
action :disabled
|
47
|
+
action :disabled?, web: :use do |features:, **options|
|
48
48
|
features.any? { |feature| !Flipper.enabled?(feature, *options.values) }
|
49
49
|
end
|
50
50
|
|
51
|
-
action :enable do |features:, **options|
|
51
|
+
action :enable, web: :use do |features:, **options|
|
52
52
|
features.all? { |feature| Flipper.enable(feature, *options.values) }
|
53
53
|
end
|
54
54
|
|
55
|
-
action :disable do |features:, **options|
|
55
|
+
action :disable, web: :use do |features:, **options|
|
56
56
|
features.all? { |feature| Flipper.disable(feature, *options.values) }
|
57
57
|
end
|
58
58
|
|
59
|
+
action :add do |features:, **options|
|
60
|
+
features.all? { |feature| Flipper.add(feature, *options.values) }
|
61
|
+
end
|
62
|
+
|
59
63
|
before do |action:, features:|
|
60
64
|
Slack::API::Notify.call!(action:, features:)
|
61
65
|
end
|
@@ -154,9 +158,10 @@ info = User::OnboardingFeature.info
|
|
154
158
|
```
|
155
159
|
|
156
160
|
```ruby
|
157
|
-
info.
|
158
|
-
info.
|
159
|
-
info.
|
161
|
+
info.actions # Feature actions (all, web) of the current class.
|
162
|
+
info.features # Feature flags of the current class.
|
163
|
+
info.groups # Feature flag groups of the current class.
|
164
|
+
info.tree # Tree of feature flags from the current class.
|
160
165
|
```
|
161
166
|
|
162
167
|
## Contributing
|
@@ -3,12 +3,23 @@
|
|
3
3
|
module Featury
|
4
4
|
module Actions
|
5
5
|
class Action
|
6
|
-
attr_reader :name,
|
6
|
+
attr_reader :name,
|
7
|
+
:web,
|
8
|
+
:block
|
7
9
|
|
8
|
-
def initialize(name, block:)
|
10
|
+
def initialize(name, web:, block:)
|
9
11
|
@name = name
|
12
|
+
@web = web
|
10
13
|
@block = block
|
11
14
|
end
|
15
|
+
|
16
|
+
def main_web?
|
17
|
+
@web == :main
|
18
|
+
end
|
19
|
+
|
20
|
+
def regular_web?
|
21
|
+
@web == :use
|
22
|
+
end
|
12
23
|
end
|
13
24
|
end
|
14
25
|
end
|
@@ -4,16 +4,24 @@ module Featury
|
|
4
4
|
module Actions
|
5
5
|
class Collection
|
6
6
|
extend Forwardable
|
7
|
-
def_delegators :@collection, :<<, :each, :map, :merge, :find
|
7
|
+
def_delegators :@collection, :<<, :filter, :each, :map, :merge, :find
|
8
8
|
|
9
9
|
def initialize(collection = Set.new)
|
10
10
|
@collection = collection
|
11
11
|
end
|
12
12
|
|
13
|
+
def for_web
|
14
|
+
Collection.new(filter { |action| action.main_web? || action.regular_web? })
|
15
|
+
end
|
16
|
+
|
13
17
|
def names
|
14
18
|
map(&:name)
|
15
19
|
end
|
16
20
|
|
21
|
+
def main_web
|
22
|
+
find(&:main_web?)
|
23
|
+
end
|
24
|
+
|
17
25
|
def find_by(name:)
|
18
26
|
find { |action| action.name == name }
|
19
27
|
end
|
data/lib/featury/actions/dsl.rb
CHANGED
data/lib/featury/info/dsl.rb
CHANGED
@@ -10,6 +10,7 @@ module Featury
|
|
10
10
|
module ClassMethods
|
11
11
|
def info
|
12
12
|
Featury::Info::Result.new(
|
13
|
+
actions: Featury::Info::Result::Actions.new(collection_of_actions),
|
13
14
|
features: collection_of_features.full_names,
|
14
15
|
groups: collection_of_groups.map(&:group),
|
15
16
|
tree: collection_of_features.full_names.concat(
|
data/lib/featury/info/result.rb
CHANGED
@@ -3,9 +3,33 @@
|
|
3
3
|
module Featury
|
4
4
|
module Info
|
5
5
|
class Result
|
6
|
-
|
6
|
+
class Actions
|
7
|
+
class Web
|
8
|
+
attr_reader :all,
|
9
|
+
:main
|
7
10
|
|
8
|
-
|
11
|
+
def initialize(collection_of_actions)
|
12
|
+
@all = collection_of_actions.names
|
13
|
+
@main = collection_of_actions.main_web.name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :all,
|
18
|
+
:web
|
19
|
+
|
20
|
+
def initialize(collection_of_actions)
|
21
|
+
@all = collection_of_actions.names
|
22
|
+
@web = Web.new(collection_of_actions.for_web)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
attr_reader :actions,
|
27
|
+
:features,
|
28
|
+
:groups,
|
29
|
+
:tree
|
30
|
+
|
31
|
+
def initialize(actions:, features:, groups:, tree:)
|
32
|
+
@actions = actions
|
9
33
|
@features = features
|
10
34
|
@groups = groups
|
11
35
|
@tree = tree
|
data/lib/featury/version.rb
CHANGED