openfeature-flipt-provider 0.0.2
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 +7 -0
- data/.gitignore +11 -0
- data/.rspec +4 -0
- data/.rubocop.yml +5 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +108 -0
- data/README.md +57 -0
- data/Rakefile +10 -0
- data/bin/console +11 -0
- data/bin/rake +27 -0
- data/bin/setup +8 -0
- data/lib/openfeature/flipt/provider.rb +167 -0
- data/lib/openfeature/flipt/version.rb +7 -0
- data/openfeature-flipt-provider.gemspec +40 -0
- metadata +161 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: eb9be79bc46fbd3ac78a380df63c7391733922b89d33c5101649e3436afee314
|
4
|
+
data.tar.gz: c63342abed2645787b29b5c14ccfeaddc6de919da2f9feb478448319b2a090ef
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c2471f2694eaa22a34ad1754fb2dbcba3667270503842c548687b97099f4abb5ba1699fa8cacba03cfb883e196f3236f960676c12d2ac76e5fd6b52e2d3d000d
|
7
|
+
data.tar.gz: c4814922d78c7beb524dd82b2351585f8fe46fefa6875c5efba6641dbba6d5bc8fd503eecbebf11f5da9c56716daab9e400f45e721a7357e45deb9a25d841c4b
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.3.5
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## [0.0.2](https://github.com/open-feature/ruby-sdk-contrib/compare/openfeature-flipt-provider-v0.0.1...openfeature-flipt-provider/v0.0.2) (2025-04-15)
|
4
|
+
|
5
|
+
|
6
|
+
### 🐛 Bug Fixes
|
7
|
+
|
8
|
+
* Update Gemfile.lock on flipt provider ([#55](https://github.com/open-feature/ruby-sdk-contrib/issues/55)) ([fd79d7b](https://github.com/open-feature/ruby-sdk-contrib/commit/fd79d7be189367d462c87c06e9a2a65a462c1a91))
|
9
|
+
|
10
|
+
|
11
|
+
### ✨ New Features
|
12
|
+
|
13
|
+
* Add Flipt provider gem with basic implementation ([#51](https://github.com/open-feature/ruby-sdk-contrib/issues/51)) ([8e0ae7c](https://github.com/open-feature/ruby-sdk-contrib/commit/8e0ae7ccd24b4c5334bfe6f794737a95ac8d18bb))
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
openfeature-flipt-provider (0.0.2)
|
5
|
+
ffi (~> 1.17)
|
6
|
+
flipt_client (~> 0.10.0)
|
7
|
+
openfeature-sdk (~> 0.4.0)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
ast (2.4.3)
|
13
|
+
diff-lcs (1.6.1)
|
14
|
+
ffi (1.17.1)
|
15
|
+
ffi (1.17.1-aarch64-linux-gnu)
|
16
|
+
ffi (1.17.1-aarch64-linux-musl)
|
17
|
+
ffi (1.17.1-arm-linux-gnu)
|
18
|
+
ffi (1.17.1-arm-linux-musl)
|
19
|
+
ffi (1.17.1-arm64-darwin)
|
20
|
+
ffi (1.17.1-x86-linux-gnu)
|
21
|
+
ffi (1.17.1-x86-linux-musl)
|
22
|
+
ffi (1.17.1-x86_64-darwin)
|
23
|
+
ffi (1.17.1-x86_64-linux-gnu)
|
24
|
+
ffi (1.17.1-x86_64-linux-musl)
|
25
|
+
flipt_client (0.10.0)
|
26
|
+
json (2.10.2)
|
27
|
+
language_server-protocol (3.17.0.4)
|
28
|
+
lint_roller (1.1.0)
|
29
|
+
openfeature-sdk (0.4.0)
|
30
|
+
parallel (1.27.0)
|
31
|
+
parser (3.3.8.0)
|
32
|
+
ast (~> 2.4.1)
|
33
|
+
racc
|
34
|
+
prism (1.4.0)
|
35
|
+
racc (1.8.1)
|
36
|
+
rainbow (3.1.1)
|
37
|
+
rake (13.2.1)
|
38
|
+
regexp_parser (2.10.0)
|
39
|
+
rspec (3.12.0)
|
40
|
+
rspec-core (~> 3.12.0)
|
41
|
+
rspec-expectations (~> 3.12.0)
|
42
|
+
rspec-mocks (~> 3.12.0)
|
43
|
+
rspec-core (3.12.3)
|
44
|
+
rspec-support (~> 3.12.0)
|
45
|
+
rspec-expectations (3.12.4)
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
47
|
+
rspec-support (~> 3.12.0)
|
48
|
+
rspec-mocks (3.12.7)
|
49
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
50
|
+
rspec-support (~> 3.12.0)
|
51
|
+
rspec-support (3.12.2)
|
52
|
+
rubocop (1.75.2)
|
53
|
+
json (~> 2.3)
|
54
|
+
language_server-protocol (~> 3.17.0.2)
|
55
|
+
lint_roller (~> 1.1.0)
|
56
|
+
parallel (~> 1.10)
|
57
|
+
parser (>= 3.3.0.2)
|
58
|
+
rainbow (>= 2.2.2, < 4.0)
|
59
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
60
|
+
rubocop-ast (>= 1.44.0, < 2.0)
|
61
|
+
ruby-progressbar (~> 1.7)
|
62
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
63
|
+
rubocop-ast (1.44.1)
|
64
|
+
parser (>= 3.3.7.2)
|
65
|
+
prism (~> 1.4)
|
66
|
+
rubocop-performance (1.25.0)
|
67
|
+
lint_roller (~> 1.1)
|
68
|
+
rubocop (>= 1.75.0, < 2.0)
|
69
|
+
rubocop-ast (>= 1.38.0, < 2.0)
|
70
|
+
ruby-progressbar (1.13.0)
|
71
|
+
standard (1.49.0)
|
72
|
+
language_server-protocol (~> 3.17.0.2)
|
73
|
+
lint_roller (~> 1.0)
|
74
|
+
rubocop (~> 1.75.2)
|
75
|
+
standard-custom (~> 1.0.0)
|
76
|
+
standard-performance (~> 1.8)
|
77
|
+
standard-custom (1.0.2)
|
78
|
+
lint_roller (~> 1.0)
|
79
|
+
rubocop (~> 1.50)
|
80
|
+
standard-performance (1.8.0)
|
81
|
+
lint_roller (~> 1.1)
|
82
|
+
rubocop-performance (~> 1.25.0)
|
83
|
+
unicode-display_width (3.1.4)
|
84
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
85
|
+
unicode-emoji (4.0.4)
|
86
|
+
|
87
|
+
PLATFORMS
|
88
|
+
aarch64-linux-gnu
|
89
|
+
aarch64-linux-musl
|
90
|
+
arm-linux-gnu
|
91
|
+
arm-linux-musl
|
92
|
+
arm64-darwin
|
93
|
+
ruby
|
94
|
+
x86-linux-gnu
|
95
|
+
x86-linux-musl
|
96
|
+
x86_64-darwin
|
97
|
+
x86_64-linux-gnu
|
98
|
+
x86_64-linux-musl
|
99
|
+
|
100
|
+
DEPENDENCIES
|
101
|
+
openfeature-flipt-provider!
|
102
|
+
rake (~> 13.0)
|
103
|
+
rspec (~> 3.12.0)
|
104
|
+
rubocop
|
105
|
+
standard (>= 1.35.1)
|
106
|
+
|
107
|
+
BUNDLED WITH
|
108
|
+
2.5.16
|
data/README.md
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
<p align="center">
|
2
|
+
<img width="400" src="https://raw.githubusercontent.com/flipt-io/flipt/main/logo.svg" alt="flipt logo" />
|
3
|
+
</p>
|
4
|
+
|
5
|
+
# Flipt - OpenFeature Ruby provider
|
6
|
+
|
7
|
+
This repository contains the Ruby provider for [Flipt](https://www.flipt.io/), a feature flagging and experimentation platform.
|
8
|
+
|
9
|
+
In conjunction with the [OpenFeature SDK](https://openfeature.dev/docs/reference/concepts/provider/) you can use this provider to integrate Flipt into your Ruby application.
|
10
|
+
|
11
|
+
For documentation on how to use Flipt, please refer to the [Flipt documentation](https://docs.flipt.io/).
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'openfeature-flipt-provider'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
```bash
|
22
|
+
$ bundle
|
23
|
+
```
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
To use the Flipt provider, you need to create an instance of the provider and pass it to the OpenFeature SDK.
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
require "open_feature/sdk"
|
30
|
+
require "openfeature/flipt/provider"
|
31
|
+
|
32
|
+
OpenFeature::SDK.configure do |config|
|
33
|
+
config.set_provider(
|
34
|
+
OpenFeature::Flipt::Provider.new(
|
35
|
+
namespace: "flipt-namespace",
|
36
|
+
options: {
|
37
|
+
url: "https://url-to-flipt-server",
|
38
|
+
update_interval: 60,
|
39
|
+
authentication: "token"
|
40
|
+
}
|
41
|
+
)
|
42
|
+
)
|
43
|
+
end
|
44
|
+
client = OpenFeature::SDK.build_client
|
45
|
+
|
46
|
+
# Check if a feature is enabled
|
47
|
+
if client.fetch_boolean_value(flag_key: "featureEnabled", default_value: false)
|
48
|
+
puts "Feature is enabled"
|
49
|
+
else
|
50
|
+
puts "Feature is disabled"
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
For a complete list of configuration options, such as authentication and error strategies, refer to the [Flipt Client Ruby SDK documentation](https://github.com/flipt-io/flipt-client-sdks/tree/main/flipt-client-ruby#constructor-arguments).
|
55
|
+
|
56
|
+
## Contributing
|
57
|
+
https://github.com/open-feature/ruby-sdk-contrib
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "openfeature/flipt/provider"
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
require "irb"
|
11
|
+
IRB.start(__FILE__)
|
data/bin/rake
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
12
|
+
|
13
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
14
|
+
|
15
|
+
if File.file?(bundle_binstub)
|
16
|
+
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
|
17
|
+
load(bundle_binstub)
|
18
|
+
else
|
19
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
20
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
require "rubygems"
|
25
|
+
require "bundler/setup"
|
26
|
+
|
27
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/setup
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "flipt_client"
|
4
|
+
require "open_feature/sdk"
|
5
|
+
|
6
|
+
module OpenFeature
|
7
|
+
module Flipt
|
8
|
+
class Provider
|
9
|
+
PROVIDER_NAME = "Flipt Provider"
|
10
|
+
|
11
|
+
# @param namespace [String] Namespace to use when fetching flags.
|
12
|
+
# @param options [Hash] Options to pass to the Flipt client.
|
13
|
+
def initialize(namespace: "default", options: {})
|
14
|
+
@client = ::Flipt::EvaluationClient.new(namespace, options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def metadata
|
18
|
+
@_metadata ||= SDK::Provider::ProviderMetadata.new(name: PROVIDER_NAME).freeze
|
19
|
+
end
|
20
|
+
|
21
|
+
def fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil)
|
22
|
+
fetch_value(
|
23
|
+
flag_key: flag_key,
|
24
|
+
default_value: default_value,
|
25
|
+
evaluation_context: evaluation_context,
|
26
|
+
evaluation_method: :evaluate_boolean,
|
27
|
+
result_key: "enabled"
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def fetch_string_value(flag_key:, default_value:, evaluation_context: nil)
|
32
|
+
fetch_value(
|
33
|
+
flag_key: flag_key,
|
34
|
+
default_value: default_value,
|
35
|
+
evaluation_context: evaluation_context,
|
36
|
+
evaluation_method: :evaluate_variant,
|
37
|
+
result_key: "variant_key"
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
def fetch_number_value(flag_key:, default_value:, evaluation_context: nil)
|
42
|
+
fetch_numeric_value(flag_key:, default_value:, evaluation_context:, allowed_types: [Numeric])
|
43
|
+
end
|
44
|
+
|
45
|
+
def fetch_integer_value(flag_key:, default_value:, evaluation_context: nil)
|
46
|
+
fetch_numeric_value(flag_key:, default_value:, evaluation_context:, allowed_types: [Integer])
|
47
|
+
end
|
48
|
+
|
49
|
+
def fetch_float_value(flag_key:, default_value:, evaluation_context: nil)
|
50
|
+
fetch_numeric_value(flag_key:, default_value:, evaluation_context:, allowed_types: [Float])
|
51
|
+
end
|
52
|
+
|
53
|
+
def fetch_object_value(flag_key:, default_value:, evaluation_context: nil)
|
54
|
+
result = fetch_value(
|
55
|
+
flag_key: flag_key,
|
56
|
+
default_value: default_value,
|
57
|
+
evaluation_context: evaluation_context,
|
58
|
+
evaluation_method: :evaluate_variant,
|
59
|
+
result_key: "variant_key"
|
60
|
+
)
|
61
|
+
|
62
|
+
unless result.value.is_a?(Hash)
|
63
|
+
begin
|
64
|
+
result.value = JSON.parse(result.value)
|
65
|
+
rescue JSON::ParserError, TypeError
|
66
|
+
return OpenFeature::SDK::Provider::ResolutionDetails.new(
|
67
|
+
value: default_value,
|
68
|
+
error_message: "Could not parse '#{result.value}' as JSON",
|
69
|
+
reason: OpenFeature::SDK::Provider::Reason::ERROR
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
result
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def fetch_value(flag_key:, default_value:, evaluation_context:, evaluation_method:, result_key:)
|
79
|
+
transformed_eval_context = transform_context(evaluation_context)
|
80
|
+
|
81
|
+
begin
|
82
|
+
response = @client.send(evaluation_method, {
|
83
|
+
flag_key: flag_key,
|
84
|
+
entity_id: evaluation_context&.fetch("targeting_key", nil) || "default",
|
85
|
+
context: transformed_eval_context
|
86
|
+
})
|
87
|
+
|
88
|
+
if %w[FLAG_DISABLED_EVALUATION_REASON].include?(response["result"]["reason"])
|
89
|
+
OpenFeature::SDK::Provider::ResolutionDetails.new(
|
90
|
+
value: default_value,
|
91
|
+
reason: OpenFeature::SDK::Provider::Reason::DISABLED
|
92
|
+
)
|
93
|
+
elsif %w[DEFAULT_EVALUATION_REASON MATCH_EVALUATION_REASON].include?(response["result"]["reason"])
|
94
|
+
OpenFeature::SDK::Provider::ResolutionDetails.new(
|
95
|
+
value: response["result"][result_key],
|
96
|
+
reason: OpenFeature::SDK::Provider::Reason::TARGETING_MATCH
|
97
|
+
)
|
98
|
+
elsif %w[UNKNOWN_EVALUATION_REASON].include?(response["result"]["reason"])
|
99
|
+
OpenFeature::SDK::Provider::ResolutionDetails.new(
|
100
|
+
value: default_value,
|
101
|
+
reason: OpenFeature::SDK::Provider::Reason::UNKNOWN
|
102
|
+
)
|
103
|
+
else
|
104
|
+
OpenFeature::SDK::Provider::ResolutionDetails.new(
|
105
|
+
value: default_value,
|
106
|
+
reason: OpenFeature::SDK::Provider::Reason::DEFAULT
|
107
|
+
)
|
108
|
+
end
|
109
|
+
rescue => e
|
110
|
+
OpenFeature::SDK::Provider::ResolutionDetails.new(
|
111
|
+
value: default_value,
|
112
|
+
error_message: e.message,
|
113
|
+
reason: OpenFeature::SDK::Provider::Reason::ERROR
|
114
|
+
)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def fetch_numeric_value(flag_key:, default_value:, evaluation_context:, allowed_types:)
|
119
|
+
result = fetch_value(
|
120
|
+
flag_key: flag_key,
|
121
|
+
default_value: default_value,
|
122
|
+
evaluation_context: evaluation_context,
|
123
|
+
evaluation_method: :evaluate_variant,
|
124
|
+
result_key: "variant_key"
|
125
|
+
)
|
126
|
+
|
127
|
+
unless result.value.is_a?(Numeric)
|
128
|
+
begin
|
129
|
+
parsed_value = Float(result.value)
|
130
|
+
# Only convert to integer if it's a whole number and allowed_types is [Integer]
|
131
|
+
result.value = if allowed_types == [Integer] && parsed_value.to_i == parsed_value
|
132
|
+
parsed_value.to_i
|
133
|
+
else
|
134
|
+
parsed_value
|
135
|
+
end
|
136
|
+
rescue ArgumentError, TypeError
|
137
|
+
return OpenFeature::SDK::Provider::ResolutionDetails.new(
|
138
|
+
value: default_value,
|
139
|
+
error_message: "Could not convert '#{result.value}' to #{allowed_types.first.name.downcase}",
|
140
|
+
reason: OpenFeature::SDK::Provider::Reason::ERROR
|
141
|
+
)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
unless allowed_types.any? { |type| result.value.is_a?(type) }
|
146
|
+
return OpenFeature::SDK::Provider::ResolutionDetails.new(
|
147
|
+
value: default_value,
|
148
|
+
error_message: "Value '#{result.value}' is not a #{allowed_types.first.name.downcase}",
|
149
|
+
reason: OpenFeature::SDK::Provider::Reason::ERROR
|
150
|
+
)
|
151
|
+
end
|
152
|
+
|
153
|
+
result
|
154
|
+
end
|
155
|
+
|
156
|
+
def transform_context(context)
|
157
|
+
eval_context = {}
|
158
|
+
context&.each do |key, value|
|
159
|
+
next if key == "targeting_key"
|
160
|
+
|
161
|
+
eval_context[key] = value.to_s
|
162
|
+
end
|
163
|
+
eval_context
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/openfeature/flipt/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "openfeature-flipt-provider"
|
7
|
+
spec.version = OpenFeature::Flipt::VERSION
|
8
|
+
spec.authors = ["Firdaus Al Ghifari"]
|
9
|
+
spec.email = ["firdaus.alghifari@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "OpenFeature Flipt Provider for Ruby"
|
12
|
+
spec.description = "OpenFeature Flipt Provider for Ruby"
|
13
|
+
spec.homepage = "https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider"
|
14
|
+
spec.license = "Apache-2.0"
|
15
|
+
spec.required_ruby_version = ">= 3.1"
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
spec.metadata["source_code_uri"] = "https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider"
|
19
|
+
spec.metadata["changelog_uri"] = "https://github.com/open-feature/ruby-sdk-contrib/blob/main/providers/openfeature-flipt-provider/CHANGELOG.md"
|
20
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/open-feature/ruby-sdk-contrib/issues"
|
21
|
+
spec.metadata["documentation_uri"] = "https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider/README.md"
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
27
|
+
end
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
spec.add_dependency "ffi", "~> 1.17"
|
33
|
+
spec.add_dependency "openfeature-sdk", "~> 0.4.0"
|
34
|
+
spec.add_dependency "flipt_client", "~> 0.10.0"
|
35
|
+
|
36
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
37
|
+
spec.add_development_dependency "rspec", "~> 3.12.0"
|
38
|
+
spec.add_development_dependency "standard", ">= 1.35.1"
|
39
|
+
spec.add_development_dependency "rubocop"
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: openfeature-flipt-provider
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Firdaus Al Ghifari
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2025-04-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.17'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.17'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: openfeature-sdk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.4.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.4.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: flipt_client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.10.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.10.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '13.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '13.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.12.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.12.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: standard
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.35.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.35.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
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
|
+
description: OpenFeature Flipt Provider for Ruby
|
112
|
+
email:
|
113
|
+
- firdaus.alghifari@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".rspec"
|
120
|
+
- ".rubocop.yml"
|
121
|
+
- ".ruby-version"
|
122
|
+
- CHANGELOG.md
|
123
|
+
- Gemfile
|
124
|
+
- Gemfile.lock
|
125
|
+
- README.md
|
126
|
+
- Rakefile
|
127
|
+
- bin/console
|
128
|
+
- bin/rake
|
129
|
+
- bin/setup
|
130
|
+
- lib/openfeature/flipt/provider.rb
|
131
|
+
- lib/openfeature/flipt/version.rb
|
132
|
+
- openfeature-flipt-provider.gemspec
|
133
|
+
homepage: https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider
|
134
|
+
licenses:
|
135
|
+
- Apache-2.0
|
136
|
+
metadata:
|
137
|
+
homepage_uri: https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider
|
138
|
+
source_code_uri: https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider
|
139
|
+
changelog_uri: https://github.com/open-feature/ruby-sdk-contrib/blob/main/providers/openfeature-flipt-provider/CHANGELOG.md
|
140
|
+
bug_tracker_uri: https://github.com/open-feature/ruby-sdk-contrib/issues
|
141
|
+
documentation_uri: https://github.com/open-feature/ruby-sdk-contrib/tree/main/providers/openfeature-flipt-provider/README.md
|
142
|
+
post_install_message:
|
143
|
+
rdoc_options: []
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '3.1'
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
requirements: []
|
157
|
+
rubygems_version: 3.5.22
|
158
|
+
signing_key:
|
159
|
+
specification_version: 4
|
160
|
+
summary: OpenFeature Flipt Provider for Ruby
|
161
|
+
test_files: []
|