Class: RailsAiBridge::Config::Introspection
- Inherits:
-
Object
- Object
- RailsAiBridge::Config::Introspection
- Defined in:
- lib/rails_ai_bridge/config/introspection.rb
Overview
Holds introspector selection, exclusion rules, and caching settings.
Instance Attribute Summary collapse
-
#additional_introspectors ⇒ Hash{Symbol => Class}
Additional custom introspector classes.
-
#cache_ttl ⇒ Integer
TTL in seconds for cached introspection results.
-
#core_models ⇒ Array<String>
Model class names tagged as +core_entity+ in semantic classification (AI focus).
-
#disabled_introspection_categories ⇒ Array<Symbol>
Product-level category keys that subtract introspectors at runtime.
-
#excluded_models ⇒ Array<String>
Model class names excluded from introspection.
-
#excluded_paths ⇒ Array<String>
Directory names excluded from code search.
-
#excluded_tables ⇒ Array<String>
Table names/patterns excluded from schema introspection.
-
#expose_credentials_key_names ⇒ Boolean
Include credential key names in config introspection output.
-
#introspectors ⇒ Array<Symbol>
Active introspector keys.
-
#preset ⇒ Symbol?
Returns the active preset name, or +nil+ if introspectors were modified directly.
-
#search_code_allowed_file_types ⇒ Array<String>
Extra file extensions allowed for rails_search_code.
-
#search_code_pattern_max_bytes ⇒ Integer
Maximum +pattern+ size in bytes for Tools::SearchCode (ReDoS / abuse guard).
-
#search_code_timeout_seconds ⇒ Float
Seconds before Tools::SearchCode aborts (+0+ disables the timeout).
Instance Method Summary collapse
-
#effective_introspectors ⇒ Array<Symbol>
Introspectors after removing those disabled by #disabled_introspection_categories.
-
#excluded_table?(table_name) ⇒ Boolean
Whether a table name matches any #excluded_tables pattern (exact or glob).
-
#initialize ⇒ Introspection
constructor
Initializes Introspection configuration with sensible defaults.
Constructor Details
#initialize ⇒ Introspection
Initializes Introspection configuration with sensible defaults. Sets:
- @introspectors to a duplicate of Configuration::PRESETS[:standard]
- @preset to :standard, matching the default introspector list
- @excluded_paths to ["node_modules", "tmp", "log", "vendor", ".git"]
- @excluded_models to common Rails/ActiveStorage/Action* classes
- @core_models, @excluded_tables, and @disabled_introspection_categories to empty arrays
- @cache_ttl to 30
- @expose_credentials_key_names to false
- @additional_introspectors to an empty hash
- @search_code_allowed_file_types to an empty array
- @search_code_pattern_max_bytes to 2048
- @search_code_timeout_seconds to 5.0
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 69 def initialize @introspectors = Configuration::PRESETS[:standard].dup @preset = :standard @excluded_paths = %w[node_modules tmp log vendor .git] @excluded_models = %w[ ApplicationRecord ActiveStorage::Blob ActiveStorage::Attachment ActiveStorage::VariantRecord ActionText::RichText ActionText::EncryptedRichText ActionMailbox::InboundEmail ActionMailbox::Record ] @core_models = [] @excluded_tables = [] @disabled_introspection_categories = [] @cache_ttl = 30 @expose_credentials_key_names = false @additional_introspectors = {} @search_code_allowed_file_types = [] @search_code_pattern_max_bytes = 2048 @search_code_timeout_seconds = 5.0 end |
Instance Attribute Details
#additional_introspectors ⇒ Hash{Symbol => Class}
Returns additional custom introspector classes.
43 44 45 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 43 def additional_introspectors @additional_introspectors end |
#cache_ttl ⇒ Integer
Returns TTL in seconds for cached introspection results.
37 38 39 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 37 def cache_ttl @cache_ttl end |
#core_models ⇒ Array<String>
Returns model class names tagged as +core_entity+ in semantic classification (AI focus).
28 29 30 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 28 def core_models @core_models end |
#disabled_introspection_categories ⇒ Array<Symbol>
Returns product-level category keys that subtract introspectors at runtime.
34 35 36 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 34 def disabled_introspection_categories @disabled_introspection_categories end |
#excluded_models ⇒ Array<String>
Returns model class names excluded from introspection.
25 26 27 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 25 def excluded_models @excluded_models end |
#excluded_paths ⇒ Array<String>
Returns directory names excluded from code search.
22 23 24 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 22 def excluded_paths @excluded_paths end |
#excluded_tables ⇒ Array<String>
Returns table names/patterns excluded from schema introspection.
31 32 33 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 31 def excluded_tables @excluded_tables end |
#expose_credentials_key_names ⇒ Boolean
Returns include credential key names in config introspection output.
40 41 42 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 40 def expose_credentials_key_names @expose_credentials_key_names end |
#introspectors ⇒ Array<Symbol>
Returns active introspector keys.
8 9 10 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 8 def introspectors @introspectors end |
#preset ⇒ Symbol?
Returns the active preset name, or +nil+ if introspectors were modified directly.
105 106 107 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 105 def preset @preset end |
#search_code_allowed_file_types ⇒ Array<String>
Returns extra file extensions allowed for rails_search_code.
46 47 48 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 46 def search_code_allowed_file_types @search_code_allowed_file_types end |
#search_code_pattern_max_bytes ⇒ Integer
Returns maximum +pattern+ size in bytes for Tools::SearchCode (ReDoS / abuse guard).
49 50 51 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 49 def search_code_pattern_max_bytes @search_code_pattern_max_bytes end |
#search_code_timeout_seconds ⇒ Float
Returns seconds before Tools::SearchCode aborts (+0+ disables the timeout).
52 53 54 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 52 def search_code_timeout_seconds @search_code_timeout_seconds end |
Instance Method Details
#effective_introspectors ⇒ Array<Symbol>
Introspectors after removing those disabled by #disabled_introspection_categories.
110 111 112 113 114 115 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 110 def effective_introspectors disabled = @disabled_introspection_categories.flat_map do |c| Configuration::INTROSPECTION_CATEGORY_INTROSPECTORS[c.to_sym] || [] end.uniq @introspectors.reject { |i| disabled.include?(i) } end |
#excluded_table?(table_name) ⇒ Boolean
Whether a table name matches any #excluded_tables pattern (exact or glob).
121 122 123 124 125 |
# File 'lib/rails_ai_bridge/config/introspection.rb', line 121 def excluded_table?(table_name) return false if table_name.nil? || table_name.to_s.empty? @excluded_tables.any? { |pat| ExclusionHelper.table_pattern_match?(pat.to_s, table_name.to_s) } end |