summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chef/lib/chef/resource.rb17
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