Class: Knowledge::Configuration
- Inherits:
-
Object
- Object
- Knowledge::Configuration
- Defined in:
- lib/knowledge/configuration.rb
Overview
Description
If the project has no defined way to manage its config, why not providing it our way?
Class Method Summary collapse
-
.inspect ⇒ String
Description.
Class Method Details
.inspect ⇒ String
Description
We’re doing black magic (a.k.a metaprogramming) to set variables directly on this class. When programmers do black magic, they should redefine some basic things that are broken as a side effect. That’s what happens here. To have a proper inspect, we’ve got to re-write it manually. It’s not something I find very clear but anyway, the API is cool so it’s ok for me.
It allows us to see every variable that has been defined on the class by metaprogramming.
Usage
@example:
# Do some magic before
Knowledge.config.environment = :development
learner = Knowledge::Learner.new
learner.use name: :default
learner.variables = { foo: :bar }
learner.gather!
# And then inspect it
puts Knowledge::Configuration.inspect
# => #<Knowledge::Configuration:0x000047116740290980 @foo="bar">
# Wonderful, isn't it?
Parameters
43 44 45 46 47 48 49 50 51 |
# File 'lib/knowledge/configuration.rb', line 43 def inspect base = "#<Knowledge::Configuration:0x0000#{object_id}" instance_variables.each do |var_name| base = "#{base} #{var_name}=\"#{instance_variable_get(var_name)}\"" end "#{base}>" end |