diff options
-rw-r--r-- | chef/lib/chef/resource.rb | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/chef/lib/chef/resource.rb b/chef/lib/chef/resource.rb index 6dbbdec29e..b92f52c8e9 100644 --- a/chef/lib/chef/resource.rb +++ b/chef/lib/chef/resource.rb @@ -70,6 +70,7 @@ F end + FORBIDDEN_IVARS = [:@run_context, :@node] HIDDEN_IVARS = [:@allowed_actions, :@resource_name, :@source_line, :@run_context, :@name, :@node] include Chef::Mixin::CheckHelper @@ -320,7 +321,7 @@ F end def inspect - ivars = instance_variables.map { |ivar| ivar.to_sym } - HIDDEN_IVARS + ivars = instance_variables.map { |ivar| ivar.to_sym } - FORBIDDEN_IVARS ivars.inject("<#{to_s}") do |str, ivar| str << " #{ivar}: #{instance_variable_get(ivar).inspect}" end << ">" @@ -328,11 +329,10 @@ F # Serialize this object as a hash def to_json(*a) + safe_ivars = instance_variables.map { |ivar| ivar.to_sym } - FORBIDDEN_IVARS instance_vars = Hash.new - self.instance_variables.each do |iv| - unless iv == "@run_context" - instance_vars[iv] = self.instance_variable_get(iv) - end + safe_ivars.each do |iv| + instance_vars[iv.to_s.sub(/^@/, '')] = instance_variable_get(iv) end results = { 'json_class' => self.class.name, @@ -342,10 +342,11 @@ F end def to_hash + safe_ivars = instance_variables.map { |ivar| ivar.to_sym } - FORBIDDEN_IVARS instance_vars = Hash.new - self.instance_variables.each do |iv| + safe_ivars.each do |iv| key = iv.to_s.sub(/^@/,'').to_sym - instance_vars[key] = self.instance_variable_get(iv) unless (key == :run_context) || (key == :node) + instance_vars[key] = instance_variable_get(iv) end instance_vars end @@ -444,7 +445,7 @@ F def json_create(o) resource = self.new(o["instance_vars"]["@name"]) o["instance_vars"].each do |k,v| - resource.instance_variable_set(k.to_sym, v) + resource.instance_variable_set("@#{k}".to_sym, v) end resource end |