Class: Knowledge::Configuration

Inherits:
Object
  • Object
show all
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

Class Method Details

.inspectString

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

Returns:

  • (String)

    as expected



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