Class: Subflag::Rails::Configuration
- Inherits:
-
Object
- Object
- Subflag::Rails::Configuration
- Defined in:
- lib/subflag/rails/configuration.rb
Overview
Configuration for Subflag Rails integration
Constant Summary collapse
- VALID_BACKENDS =
%i[subflag active_record memory].freeze
Instance Attribute Summary collapse
-
#admin_auth_callback ⇒ Proc?
readonly
Admin authentication callback for the admin UI.
-
#api_key ⇒ String?
The Subflag API key.
-
#api_url ⇒ String
The Subflag API URL (defaults to production).
-
#backend ⇒ Symbol
Backend to use (:subflag, :active_record, :memory) - :subflag — Subflag Cloud SaaS (default) - :active_record — Self-hosted, flags stored in your database - :memory — In-memory store for testing.
-
#cache_ttl ⇒ Integer, ...
TTL for cross-request caching When set, prefetched flags are cached in Rails.cache for this duration.
-
#log_level ⇒ Symbol
Log level for flag evaluations (:debug, :info, :warn).
-
#logging_enabled ⇒ Boolean
Whether to log flag evaluations.
Instance Method Summary collapse
-
#admin_auth {|controller| ... } ⇒ Object
Configure authentication for the admin UI.
-
#build_user_context(user) ⇒ Hash?
Build context from a user object using the configured block.
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
-
#rails_cache_enabled? ⇒ Boolean
Check if cross-request caching via Rails.cache is enabled.
-
#user_context {|user| ... } ⇒ Object
Configure how to extract context from a user object.
-
#user_context_configured? ⇒ Boolean
Check if user context is configured.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/subflag/rails/configuration.rb', line 54 def initialize @backend = :subflag @api_key = nil @api_url = "https://api.subflag.com" @user_context_block = nil @logging_enabled = false @log_level = :debug @cache_ttl = nil @admin_auth_callback = nil end |
Instance Attribute Details
#admin_auth_callback ⇒ Proc? (readonly)
Returns Admin authentication callback for the admin UI.
52 53 54 |
# File 'lib/subflag/rails/configuration.rb', line 52 def admin_auth_callback @admin_auth_callback end |
#api_key ⇒ String?
Returns The Subflag API key.
35 36 37 |
# File 'lib/subflag/rails/configuration.rb', line 35 def api_key @api_key end |
#api_url ⇒ String
Returns The Subflag API URL (defaults to production).
38 39 40 |
# File 'lib/subflag/rails/configuration.rb', line 38 def api_url @api_url end |
#backend ⇒ Symbol
Returns Backend to use (:subflag, :active_record, :memory)
- :subflag — Subflag Cloud SaaS (default)
- :active_record — Self-hosted, flags stored in your database
- :memory — In-memory store for testing.
32 33 34 |
# File 'lib/subflag/rails/configuration.rb', line 32 def backend @backend end |
#cache_ttl ⇒ Integer, ...
Returns TTL for cross-request caching When set, prefetched flags are cached in Rails.cache for this duration. Set to nil to disable cross-request caching (default).
49 50 51 |
# File 'lib/subflag/rails/configuration.rb', line 49 def cache_ttl @cache_ttl end |
#log_level ⇒ Symbol
Returns Log level for flag evaluations (:debug, :info, :warn).
44 45 46 |
# File 'lib/subflag/rails/configuration.rb', line 44 def log_level @log_level end |
#logging_enabled ⇒ Boolean
Returns Whether to log flag evaluations.
41 42 43 |
# File 'lib/subflag/rails/configuration.rb', line 41 def logging_enabled @logging_enabled end |
Instance Method Details
#admin_auth {|controller| ... } ⇒ Object
Configure authentication for the admin UI
138 139 140 141 |
# File 'lib/subflag/rails/configuration.rb', line 138 def admin_auth(&block) @admin_auth_callback = block if block_given? @admin_auth_callback end |
#build_user_context(user) ⇒ Hash?
Build context from a user object using the configured block
118 119 120 121 122 |
# File 'lib/subflag/rails/configuration.rb', line 118 def build_user_context(user) return nil unless user && @user_context_block @user_context_block.call(user) end |
#rails_cache_enabled? ⇒ Boolean
Check if cross-request caching via Rails.cache is enabled
81 82 83 84 85 86 |
# File 'lib/subflag/rails/configuration.rb', line 81 def rails_cache_enabled? return false unless @cache_ttl && @cache_ttl.to_i > 0 return false unless defined?(::Rails.cache) && ::Rails.cache.present? true end |
#user_context {|user| ... } ⇒ Object
Configure how to extract context from a user object
102 103 104 105 |
# File 'lib/subflag/rails/configuration.rb', line 102 def user_context(&block) @user_context_block = block if block_given? @user_context_block end |
#user_context_configured? ⇒ Boolean
Check if user context is configured
110 111 112 |
# File 'lib/subflag/rails/configuration.rb', line 110 def user_context_configured? !@user_context_block.nil? end |