class KubeManifest::Describer

Attributes

describers[RW]

Public Class Methods

append(klass, defaults, block) click to toggle source
# File lib/kube_manifest/describe.rb, line 83
def self.append(klass, defaults, block)
  self.instance.describers.append([klass, defaults, block])
end
describe!() click to toggle source
Calls superclass method
# File lib/kube_manifest/describe.rb, line 87
def self.describe!
  self.instance.describers.each do |pair|
    klass, defaults, block = pair

    ::KubeManifest.define_singleton_method klass.name.split('::').last do |**args, &blk|
      ::KubeManifest::Context.new(klass, args, &blk)
    end

    unless defaults.empty?
      klass.define_method(:initialize) do |**kwargs|
        super(**kwargs)
        defaults.each_pair do |key, value|
          instance_variable_set("@#{key}", value)
        end
      end
    end

    describer = ::KubeManifest::Describe.new(klass)
    defaults.each_pair do |key, value|
      describer.send(key.to_sym, value)
    end
    describer.instance_eval(&block) if block
  end
  self.instance.describers.clear
end
new() click to toggle source
# File lib/kube_manifest/describe.rb, line 79
def initialize
  @describers = []
end