Class: Subflag::Rails::Backends::ActiveRecordProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/subflag/rails/backends/active_record_provider.rb

Overview

Provider that reads flags from your Rails database with targeting support.

Stores flags in a subflag_flags table with typed values and optional targeting rules for showing different values to different users.

Examples:

Basic setup

Subflag::Rails.configure do |config|
  config.backend = :active_record
end

Create a simple flag

Subflag::Rails::Flag.create!(
  key: "max-projects",
  value: "100",
  value_type: "integer"
)

Create a flag with targeting rules

Subflag::Rails::Flag.create!(
  key: "new-dashboard",
  value: "false",
  value_type: "boolean",
  targeting_rules: [
    { "value" => "true", "conditions" => { "type" => "AND", "conditions" => [{ "attribute" => "email", "operator" => "ENDS_WITH", "value" => "@company.com" }] } }
  ]
)

Instance Method Summary collapse

Instance Method Details

#fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



41
42
43
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 41

def fetch_boolean_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :boolean, evaluation_context)
end

#fetch_float_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



57
58
59
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 57

def fetch_float_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :float, evaluation_context)
end

#fetch_integer_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



53
54
55
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 53

def fetch_integer_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :integer, evaluation_context)
end

#fetch_number_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



49
50
51
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 49

def fetch_number_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :number, evaluation_context)
end

#fetch_object_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



61
62
63
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 61

def fetch_object_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :object, evaluation_context)
end

#fetch_string_value(flag_key:, default_value:, evaluation_context: nil) ⇒ Object



45
46
47
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 45

def fetch_string_value(flag_key:, default_value:, evaluation_context: nil)
  resolve(flag_key, default_value, :string, evaluation_context)
end

#initObject



38
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 38

def init; end

#metadataObject



34
35
36
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 34

def 
  OpenFeature::SDK::Provider::ProviderMetadata.new(name: "Subflag ActiveRecord Provider")
end

#shutdownObject



39
# File 'lib/subflag/rails/backends/active_record_provider.rb', line 39

def shutdown; end