unleash-incognia 0.1.0 → 0.2.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/Gemfile.lock +1 -1
- data/README.md +43 -0
- data/lib/unleash/incognia/client.rb +40 -0
- data/lib/unleash/incognia/configuration.rb +17 -0
- data/lib/unleash/incognia/version.rb +1 -1
- data/lib/unleash/incognia.rb +14 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1c56a74ce540b6d9aa984bec2c8af0227220f21700af8e40365a2756dae8e47
|
4
|
+
data.tar.gz: f0d2bf0e4191dc4b2c029d1e16ab0cd3b309690487292e767fa402f1f7dd556a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11476cf48a827fe7ff4f76d4091ebdde29761b2fa52fa66d892bb4dbc42ca831a0efb8c94e093e150076ddb46508d4f292d65b827241cf4c65dde8d88e84918d
|
7
|
+
data.tar.gz: 3832c9d69f1029e414ccf9d4fddfcce6351acc23673171d35e44bfd0e3b48e95842068a8ad182674d3512d085ec492f560047f229d756a16a8784a10b3970b00
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -24,6 +24,49 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
You must set up [Unleash Ruby SDK](https://github.com/Unleash/unleash-client-ruby) in order to use these custom strategies.
|
26
26
|
|
27
|
+
```ruby
|
28
|
+
> user = OpenStruct.new(id: 2, email: 'my@mail.com')
|
29
|
+
=> #<OpenStruct id=2, email="my@mail.com">
|
30
|
+
|
31
|
+
> Unleash::Incognia::Client.new(user: user).enabled_features
|
32
|
+
=> ["incognia_feature_1"]
|
33
|
+
|
34
|
+
> organization = OpenStruct.new(id: 5)
|
35
|
+
=> #<OpenStruct id=5>
|
36
|
+
|
37
|
+
> client = Unleash::Incognia::Client.new(user: user, organization: organization)
|
38
|
+
=> #<Unleash::Incognia::Client:0x000055caf7c7f390 @user=#<OpenStruct id=2, email="my@mail.com">, @organization=#<OpenStruct id=5>>
|
39
|
+
|
40
|
+
# List enabled features
|
41
|
+
> client.enabled_features
|
42
|
+
=> ["incognia_feature_1", "incognia_feature_2", "incognia_feature_3"]
|
43
|
+
|
44
|
+
# Ask if some feature is enabled
|
45
|
+
> client.feature_enabled?("disabled_feature")
|
46
|
+
=> false
|
47
|
+
|
48
|
+
> client.feature_enabled?("incognia_feature_2")
|
49
|
+
=> true
|
50
|
+
```
|
51
|
+
|
52
|
+
### Configuration
|
53
|
+
|
54
|
+
Whenever you have `Unleash::Client` being instanciated change it to:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
Unleash::Incognia.configure do |config|
|
58
|
+
config.unleash_client = Unleash::Client.new
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
62
|
+
Or:
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
Unleash::Incognia.configuration.unleash_client = Unleash::Client.new
|
66
|
+
```
|
67
|
+
|
68
|
+
This way, `Unleash::Incognia` client will use proper `Unleash` client.
|
69
|
+
|
27
70
|
## Development
|
28
71
|
|
29
72
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Unleash
|
2
|
+
module Incognia
|
3
|
+
class Client
|
4
|
+
def initialize(user:, organization: nil)
|
5
|
+
@user = user
|
6
|
+
@organization = organization
|
7
|
+
end
|
8
|
+
|
9
|
+
def feature_enabled?(name)
|
10
|
+
client.is_enabled? name, context
|
11
|
+
end
|
12
|
+
|
13
|
+
def enabled_features
|
14
|
+
feature_flags_names = Unleash.toggles.map do |feature_flag|
|
15
|
+
feature_flag['name']
|
16
|
+
end
|
17
|
+
|
18
|
+
feature_flags_names.select { |name| feature_enabled?(name) }
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_reader :user, :organization
|
24
|
+
|
25
|
+
def client
|
26
|
+
Incognia.configuration.unleash_client
|
27
|
+
end
|
28
|
+
|
29
|
+
def context
|
30
|
+
@context ||= Unleash::Context.new(
|
31
|
+
properties: {
|
32
|
+
user_id: user.id,
|
33
|
+
user_email: user.email,
|
34
|
+
organization_id: organization&.id
|
35
|
+
}.compact
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Unleash
|
2
|
+
module Incognia
|
3
|
+
class Configuration
|
4
|
+
attr_accessor :unleash_client
|
5
|
+
|
6
|
+
def initialize(**attributes)
|
7
|
+
attributes.each do |attribute, value|
|
8
|
+
if respond_to?("#{attribute}=")
|
9
|
+
method("#{attribute}=").call(value)
|
10
|
+
else
|
11
|
+
instance_variable_set("@#{attribute}", value)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/unleash/incognia.rb
CHANGED
@@ -5,6 +5,19 @@ require 'unleash/strategy/member'
|
|
5
5
|
require 'unleash/strategy/email_domain'
|
6
6
|
require 'unleash/strategy/organization'
|
7
7
|
|
8
|
+
require 'unleash/incognia/configuration'
|
9
|
+
require 'unleash/incognia/client'
|
10
|
+
|
8
11
|
module Unleash
|
9
|
-
module Incognia
|
12
|
+
module Incognia
|
13
|
+
class << self
|
14
|
+
def configuration
|
15
|
+
@configuration ||= Configuration.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def configure
|
19
|
+
yield(configuration)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
10
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unleash-incognia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juliana Lucena
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unleash
|
@@ -42,6 +42,8 @@ files:
|
|
42
42
|
- bin/console
|
43
43
|
- bin/setup
|
44
44
|
- lib/unleash/incognia.rb
|
45
|
+
- lib/unleash/incognia/client.rb
|
46
|
+
- lib/unleash/incognia/configuration.rb
|
45
47
|
- lib/unleash/incognia/version.rb
|
46
48
|
- lib/unleash/strategy/email_domain.rb
|
47
49
|
- lib/unleash/strategy/member.rb
|