class Kongfigure::Resources::Base
Attributes
id[RW]
kongfigure_ignore_fields[RW]
plugins[RW]
unchanged[RW]
updated[RW]
Public Class Methods
build_all(resources_hash)
click to toggle source
# File lib/kongfigure/resources/base.rb, line 21 def self.build_all(resources_hash) resources_hash.map do |resource_hash| build(resource_hash) end end
new(id, kongfigure_ignore_fields = nil)
click to toggle source
# File lib/kongfigure/resources/base.rb, line 6 def initialize(id, kongfigure_ignore_fields = nil) @id = id @kongfigure_ignore_fields = (kongfigure_ignore_fields || []).map { |field| field.split(".") } if self.class != Kongfigure::Resources::Plugin && self.class != Kongfigure::Resources::Route @kongfigure_ignore_fields.push("id") end @plugins = [] @updated = false @unchanged = false end
Public Instance Methods
==(other_object)
click to toggle source
# File lib/kongfigure/resources/base.rb, line 27 def ==(other_object) differences = deep_diff(other_object.api_attributes, api_attributes, kongfigure_ignore_fields) differences_count = differences.flatten.size if differences_count > 0 ap api_attributes ap other_object.api_attributes ap differences end differences_count == 0 end
api_name()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 54 def api_name raise NotImplementedError end
display_name()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 38 def display_name identifier end
has_to_be_deleted?()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 50 def has_to_be_deleted? @updated == false && @unchanged == false end
mark_as_unchanged()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 46 def mark_as_unchanged @unchanged = true end
mark_as_updated()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 42 def mark_as_updated @updated = true end
plugin_allowed?()
click to toggle source
# File lib/kongfigure/resources/base.rb, line 17 def plugin_allowed? true end
Private Instance Methods
deep_diff(a, b, ignore_nested_keys=[], level=0)
click to toggle source
# File lib/kongfigure/resources/base.rb, line 59 def deep_diff(a, b, ignore_nested_keys=[], level=0) ignore_nested_keys = ignore_nested_keys.inject([]) do |ignore_nested_keys, ignore_nested_key| current_key = ignore_nested_key[level] if a.has_key?(current_key) || b.has_key?(current_key) ignore_nested_keys.push(ignore_nested_key[level..ignore_nested_key.size]) end ignore_nested_keys end ignore_keys = ignore_nested_keys.select {|ignore_nested_key| ignore_nested_key.size == 1}.flatten (a.keys | b.keys).each_with_object([]) do |k, diff| if a[k] != b[k] if a[k].is_a?(Hash) && b[k].is_a?(Hash) diff.push(deep_diff(a[k], b[k], ignore_nested_keys, level + 1)) elsif !ignore_keys.include?(k) && !b[k].nil? && k != "id" diff.push([a[k], b[k], k, level]) end end diff end end