Class: Ask::SolidErrors::ClientProxy
- Inherits:
- BasicObject
- Defined in:
- lib/ask/solid_errors/client.rb
Overview
Wraps SolidErrors::Error and delegates query methods to it while providing a clean interface for AI agents.
Instance Method Summary collapse
-
#initialize ⇒ ClientProxy
constructor
A new instance of ClientProxy.
-
#method_missing(name) ⇒ Object
Delegate all known query methods to the SolidErrors model.
-
#occurrence_count(error) ⇒ Object
Return the occurrence count for an error.
-
#recent(limit: 10) ⇒ Object
Return the most recent errors.
-
#resolved ⇒ Object
Return all resolved errors.
- #respond_to_missing?(name, include_private = false) ⇒ Boolean
-
#unresolved ⇒ Object
Return all unresolved errors.
Constructor Details
#initialize ⇒ ClientProxy
Returns a new instance of ClientProxy.
90 91 92 |
# File 'lib/ask/solid_errors/client.rb', line 90 def initialize @model = ::SolidErrors::Error end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name) ⇒ Object
Delegate all known query methods to the SolidErrors model.
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/ask/solid_errors/client.rb', line 95 def method_missing(name, ...) @model.public_send(name, ...) rescue ::ActiveRecord::NoDatabaseError => e ::Kernel.raise e, "SolidErrors database is not configured. " \ "Run `bin/rails solid_errors:install:migrations db:migrate` first." rescue ::ActiveRecord::StatementInvalid => e if e..include?("solid_errors") ::Kernel.raise e, "SolidErrors table does not exist. " \ "Run `bin/rails solid_errors:install:migrations db:migrate` first." else ::Kernel.raise e end end |
Instance Method Details
#occurrence_count(error) ⇒ Object
Return the occurrence count for an error.
129 130 131 132 |
# File 'lib/ask/solid_errors/client.rb', line 129 def occurrence_count(error) error = @model.find(error) unless error.is_a?(::ActiveRecord::Base) error.occurrences.count end |
#recent(limit: 10) ⇒ Object
Return the most recent errors.
114 115 116 |
# File 'lib/ask/solid_errors/client.rb', line 114 def recent(limit: 10) @model.order(created_at: :desc).limit(limit) end |
#resolved ⇒ Object
Return all resolved errors.
124 125 126 |
# File 'lib/ask/solid_errors/client.rb', line 124 def resolved @model.resolved.order(created_at: :desc) end |
#respond_to_missing?(name, include_private = false) ⇒ Boolean
109 110 111 |
# File 'lib/ask/solid_errors/client.rb', line 109 def respond_to_missing?(name, include_private = false) @model.respond_to?(name, include_private) || super end |
#unresolved ⇒ Object
Return all unresolved errors.
119 120 121 |
# File 'lib/ask/solid_errors/client.rb', line 119 def unresolved @model.unresolved.order(created_at: :desc) end |