subflag-rails 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1796467214a7c83cd0187601d5298c6b5aae3397b6b0f48122d0daecae7a78fa
4
- data.tar.gz: 58ca3b9ba465a7ce5f4be64df8a37dc88dc98a51ee9f7411d7e35856cd419beb
3
+ metadata.gz: 4b994b3be254b327ab4c2d7f94ed4a30a9af6a47af2c19b58089b02b5d8487e5
4
+ data.tar.gz: 267fb6f5df4a770f7133ee475ae364118bc2459031137434160cf17ddf91033c
5
5
  SHA512:
6
- metadata.gz: 2abda5d0854287dbada9fd0205552525baa8e5d27a7924660656009cf516c2c38a3b37aba246a39dc688896a5fec053c2d32544eda6d83aef05824893472a2a1
7
- data.tar.gz: f08bbb6c48fc8f61f24c3e9846aa6aa53276f5cbdb4ef4b165b230eeffd948e26e7f5477bee2c63b4b1b65b2d09decf4be0c5999db2f2afd81e06bc8e35d7abb
6
+ metadata.gz: bda7f1465a5f3eabf2baa0190c372c4687b731ad5cb43a9d11851b78b9d23457c9dbdffb65f2235f92f61b18841ed1bddc8d5b6eae27d89ac4b9802db6b81df3
7
+ data.tar.gz: 950362e174920f95c08309a8cfc406e1249612f554f0cd51df13f580c8f6a73492cca56e2ff597dcba94fbb6914d66e069569a23c5df0c139ded9c7983561860
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.2.0] - 2025-11-30
6
+
7
+ ### Changed
8
+
9
+ - Updated to use `OpenFeature::SDK::EvaluationContext` for proper context passing
10
+ - Requires `subflag-openfeature-provider` >= 0.1 (works best with 0.2+)
11
+
12
+ ### Fixed
13
+
14
+ - Fixed OpenFeature SDK require path (`open_feature/sdk` instead of `openfeature/sdk`)
15
+ - Fixed provider class reference (`Subflag::Provider` instead of `Subflag::OpenFeature::Provider`)
16
+ - Fixed OpenFeature client method calls to use keyword arguments
17
+
5
18
  ## [0.1.0] - 2025-11-30
6
19
 
7
20
  ### Added
@@ -20,7 +20,7 @@ module Subflag
20
20
  cache_key = build_cache_key(flag_key, ctx, :boolean)
21
21
 
22
22
  result = RequestCache.fetch(cache_key) do
23
- openfeature_client.fetch_boolean_value(flag_key, default, ctx)
23
+ openfeature_client.fetch_boolean_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
24
24
  end
25
25
 
26
26
  log_evaluation(flag_key, result, default)
@@ -81,15 +81,15 @@ module Subflag
81
81
  def fetch_value_by_type(flag_key, default, ctx)
82
82
  case default
83
83
  when String
84
- openfeature_client.fetch_string_value(flag_key, default, ctx)
84
+ openfeature_client.fetch_string_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
85
85
  when Integer
86
- openfeature_client.fetch_integer_value(flag_key, default, ctx)
86
+ openfeature_client.fetch_integer_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
87
87
  when Float
88
- openfeature_client.fetch_float_value(flag_key, default, ctx)
88
+ openfeature_client.fetch_float_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
89
89
  when TrueClass, FalseClass
90
- openfeature_client.fetch_boolean_value(flag_key, default, ctx)
90
+ openfeature_client.fetch_boolean_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
91
91
  when Hash
92
- openfeature_client.fetch_object_value(flag_key, default, ctx)
92
+ openfeature_client.fetch_object_value(flag_key: flag_key, default_value: default, evaluation_context: ctx)
93
93
  when NilClass
94
94
  raise ArgumentError, "default is required for value flags (it determines the expected type)"
95
95
  else
@@ -100,15 +100,15 @@ module Subflag
100
100
  def fetch_details_by_type(flag_key, default, ctx)
101
101
  case default
102
102
  when String
103
- openfeature_client.fetch_string_details(flag_key, default, ctx)
103
+ openfeature_client.fetch_string_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
104
104
  when Integer
105
- openfeature_client.fetch_integer_details(flag_key, default, ctx)
105
+ openfeature_client.fetch_integer_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
106
106
  when Float
107
- openfeature_client.fetch_float_details(flag_key, default, ctx)
107
+ openfeature_client.fetch_float_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
108
108
  when TrueClass, FalseClass
109
- openfeature_client.fetch_boolean_details(flag_key, default, ctx)
109
+ openfeature_client.fetch_boolean_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
110
110
  when Hash
111
- openfeature_client.fetch_object_details(flag_key, default, ctx)
111
+ openfeature_client.fetch_object_details(flag_key: flag_key, default_value: default, evaluation_context: ctx)
112
112
  when NilClass
113
113
  raise ArgumentError, "default is required for evaluate (it determines the expected type)"
114
114
  else
@@ -4,11 +4,11 @@ module Subflag
4
4
  module Rails
5
5
  # Builds OpenFeature evaluation context from user objects and additional attributes
6
6
  class ContextBuilder
7
- # Build an OpenFeature context hash
7
+ # Build an OpenFeature EvaluationContext
8
8
  #
9
9
  # @param user [Object, nil] The user object for targeting
10
10
  # @param context [Hash, nil] Additional context attributes
11
- # @return [Hash, nil] The combined context or nil if empty
11
+ # @return [OpenFeature::SDK::EvaluationContext, nil] The combined context or nil if empty
12
12
  def self.build(user: nil, context: nil)
13
13
  new(user: user, context: context).build
14
14
  end
@@ -18,9 +18,9 @@ module Subflag
18
18
  @context = context || {}
19
19
  end
20
20
 
21
- # Build the context hash
21
+ # Build the OpenFeature EvaluationContext
22
22
  #
23
- # @return [Hash, nil]
23
+ # @return [OpenFeature::SDK::EvaluationContext, nil]
24
24
  def build
25
25
  result = {}
26
26
 
@@ -34,7 +34,11 @@ module Subflag
34
34
  result.merge!(@context) if @context.is_a?(Hash)
35
35
 
36
36
  # Return nil if empty (no context to send)
37
- result.empty? ? nil : normalize_context(result)
37
+ return nil if result.empty?
38
+
39
+ # Convert to OpenFeature EvaluationContext
40
+ normalized = normalize_context(result)
41
+ OpenFeature::SDK::EvaluationContext.new(**normalized)
38
42
  end
39
43
 
40
44
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Subflag
4
4
  module Rails
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
data/lib/subflag/rails.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "openfeature/sdk"
3
+ require "open_feature/sdk"
4
4
  require "subflag"
5
5
 
6
6
  require_relative "rails/version"
@@ -59,7 +59,7 @@ module Subflag
59
59
  def setup_provider
60
60
  return unless configuration.api_key
61
61
 
62
- provider = ::Subflag::OpenFeature::Provider.new(
62
+ provider = ::Subflag::Provider.new(
63
63
  api_key: configuration.api_key,
64
64
  api_url: configuration.api_url
65
65
  )
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: subflag-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Subflag
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-30 00:00:00.000000000 Z
11
+ date: 2025-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: subflag-openfeature-provider
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: railties
29
35
  requirement: !ruby/object:Gem::Requirement