Class: Knowledge::Learner
- Inherits:
-
Object
- Object
- Knowledge::Learner
- Defined in:
- lib/knowledge/learner.rb
Overview
Class Attribute Summary collapse
-
.adapters ⇒ Object
readonly
Returns the value of attribute adapters.
Instance Attribute Summary collapse
-
#additionnal_params ⇒ Object
readonly
Additionnal params to be passed to the adapter.
-
#available_adapters ⇒ Object
readonly
List of available adapters.
-
#enabled_adapters ⇒ Object
readonly
List of enabled adapters.
-
#setter ⇒ Object
Config variables setter - can be overridden from outside of the object.
-
#variables ⇒ Object
Descriptor object for the variables to set/fetch.
Class Method Summary collapse
-
.register_default_adapter(names:, klass:) ⇒ Object
Registers given adapter as a default one.
Instance Method Summary collapse
-
#add_adapter_param(adapter:, name:, value:) ⇒ Object
Sets additional params to be passed to the adapter through params option.
-
#add_adapter_params(adapter:, params:) ⇒ Object
Sets additional params to be passed to the adapter through params option.
-
#backup!(path:) ⇒ Object
Gathers all the knowledge and backups it.
-
#disable_adapter(name:) ⇒ Object
Disables an adapter.
-
#enable_adapter(name:, variables: nil) ⇒ Object
Enables an adapter.
-
#gather! ⇒ Object
Gathers all the knowledge and put it into your app.
-
#initialize ⇒ Learner
constructor
Just sets default value for instance variables.
-
#register_adapter(name:, klass:, enable: false, variables: nil) ⇒ Object
Registers an adapter and enable it if asked.
-
#set_adapter_variables(name:, variables: nil) ⇒ Object
Sets variables for a given adapter.
-
#set_adapter_variables_by_hash(name:, variables:) ⇒ Object
Sets variables as a hash for a given adapter.
-
#unregister_adapter(name:) ⇒ Object
Unregisters an adapter and disable it.
-
#use(name:, enable: true) ⇒ Object
Registers & enables one of the lib’s default adapters.
Constructor Details
Class Attribute Details
.adapters ⇒ Object (readonly)
Returns the value of attribute adapters.
63 64 65 |
# File 'lib/knowledge/learner.rb', line 63 def adapters @adapters end |
Instance Attribute Details
#additionnal_params ⇒ Object (readonly)
Additionnal params to be passed to the adapter
30 31 32 |
# File 'lib/knowledge/learner.rb', line 30 def additionnal_params @additionnal_params end |
#available_adapters ⇒ Object (readonly)
List of available adapters
30 31 32 |
# File 'lib/knowledge/learner.rb', line 30 def available_adapters @available_adapters end |
#enabled_adapters ⇒ Object (readonly)
List of enabled adapters
30 31 32 |
# File 'lib/knowledge/learner.rb', line 30 def enabled_adapters @enabled_adapters end |
#setter ⇒ Object
Config variables setter - can be overridden from outside of the object
30 31 32 |
# File 'lib/knowledge/learner.rb', line 30 def setter @setter end |
#variables ⇒ Object
Descriptor object for the variables to set/fetch
30 31 32 |
# File 'lib/knowledge/learner.rb', line 30 def variables @variables end |
Class Method Details
.register_default_adapter(names:, klass:) ⇒ Object
Registers given adapter as a default one. This method is meant to be used only by libraries adding adapters to the lib.
Usage
@example:
# Define your adapter
class SuperServiceAdapter < ::Knowledge::Adapters::Base; end
# Register your adapter
Knowledge::Learner.register_default_adapter(names: %i[super_service service], klass: SuperServiceAdapter)
# Now you can use it the same way every other default adapters
learner = Knowledge::Learner.new
learner.use(name: :super_service)
Parameters
90 91 92 93 94 |
# File 'lib/knowledge/learner.rb', line 90 def register_default_adapter(names:, klass:) @adapters ||= {} names.each { |name| @adapters[name.to_sym] = klass } end |
Instance Method Details
#add_adapter_param(adapter:, name:, value:) ⇒ Object
167 168 169 170 |
# File 'lib/knowledge/learner.rb', line 167 def add_adapter_param(adapter:, name:, value:) @additionnal_params[adapter.to_sym] ||= {} @additionnal_params[adapter.to_sym][name] = value end |
#add_adapter_params(adapter:, params:) ⇒ Object
187 188 189 |
# File 'lib/knowledge/learner.rb', line 187 def add_adapter_params(adapter:, params:) @additionnal_params[adapter.to_sym] = params end |
#backup!(path:) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/knowledge/learner.rb', line 115 def backup!(path:) backupper = ::Knowledge::Backupper.new(path: path) ::Knowledge::Initializer.new( adapters: enabled_adapters, params: additionnal_params, setter: backupper, variables: variables ).run backupper.backup! end |
#disable_adapter(name:) ⇒ Object
208 209 210 |
# File 'lib/knowledge/learner.rb', line 208 def disable_adapter(name:) @enabled_adapters.delete(name.to_sym) end |
#enable_adapter(name:, variables: nil) ⇒ Object
235 236 237 238 239 240 241 242 |
# File 'lib/knowledge/learner.rb', line 235 def enable_adapter(name:, variables: nil) _key, klass = available_adapters.find { |key, _klass| key.to_sym == name.to_sym } raise Knowledge::AdapterNotFound, "Cannot find \"#{name}\" in available adapters" if klass.nil? @enabled_adapters[name.to_sym] = klass set_adapter_variables(name: name, variables: variables) end |
#gather! ⇒ Object
140 141 142 143 144 145 146 147 |
# File 'lib/knowledge/learner.rb', line 140 def gather! ::Knowledge::Initializer.new( adapters: enabled_adapters, params: additionnal_params, setter: setter, variables: variables ).run end |
#register_adapter(name:, klass:, enable: false, variables: nil) ⇒ Object
261 262 263 264 265 |
# File 'lib/knowledge/learner.rb', line 261 def register_adapter(name:, klass:, enable: false, variables: nil) @available_adapters[name.to_sym] = klass enable_adapter(name: name) if enable set_adapter_variables(name: name, variables: variables) end |
#set_adapter_variables(name:, variables: nil) ⇒ Object
282 283 284 285 286 287 288 289 290 291 292 293 294 295 |
# File 'lib/knowledge/learner.rb', line 282 def set_adapter_variables(name:, variables: nil) return unless variables case variables when Hash set_adapter_variables_by_hash(name: name, variables: variables) when String set_adapter_variables(name: name, variables: yaml_content(variables)) else raise "Unknown variables type #{variables.class}" end rescue StandardError => e raise ::Knowledge::LearnError, e. end |
#set_adapter_variables_by_hash(name:, variables:) ⇒ Object
Sets variables as a hash for a given adapter.
Usage
Parameters
312 313 314 315 316 |
# File 'lib/knowledge/learner.rb', line 312 def set_adapter_variables_by_hash(name:, variables:) variables = variables[name.to_s] if variables.key?(name.to_s) variables = variables[name.to_sym] if variables.key?(name.to_sym) @variables[name.to_sym] = variables end |
#unregister_adapter(name:) ⇒ Object
335 336 337 338 |
# File 'lib/knowledge/learner.rb', line 335 def unregister_adapter(name:) disable_adapter(name: name) @available_adapters.delete(name.to_sym) end |
#use(name:, enable: true) ⇒ Object
358 359 360 361 362 363 364 |
# File 'lib/knowledge/learner.rb', line 358 def use(name:, enable: true) adapter = self.class.adapters[name.to_sym] raise ::Knowledge::RegisterError, "Unable to register following: #{name}" if adapter.nil? register_adapter(name: name.to_sym, klass: adapter, enable: enable) end |