diff options
Diffstat (limited to 'lib/puppet/parser/resource')
| -rw-r--r-- | lib/puppet/parser/resource/param.rb | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/puppet/parser/resource/param.rb b/lib/puppet/parser/resource/param.rb index e570055c7..fc3d72c85 100644 --- a/lib/puppet/parser/resource/param.rb +++ b/lib/puppet/parser/resource/param.rb @@ -18,17 +18,30 @@ class Puppet::Parser::Resource::Param def line_to_i return line ? Integer(line) : nil end + + # Make sure an array (or possibly not an array) of values is correctly + # set up for Rails. The main thing is that Resource::Reference objects + # should stay objects, so they just get serialized. + def munge_for_rails(values) + values = value.is_a?(Array) ? value : [value] + values.map do |v| + if v.is_a?(Puppet::Parser::Resource::Reference) + v + else + v.to_s + end + end + end # Store a new parameter in a Rails db. def to_rails(db_resource) - values = value.is_a?(Array) ? value : [value] - values = values.map { |v| v.to_s } + values = munge_for_rails(value) param_name = Puppet::Rails::ParamName.find_or_create_by_name(self.name.to_s) line_number = line_to_i() return values.collect do |v| - db_resource.param_values.create(:value => v.to_s, + db_resource.param_values.create(:value => v, :line => line_number, :param_name => param_name) end @@ -44,7 +57,7 @@ class Puppet::Parser::Resource::Param values_to_add(db_values).each { |add_me| db_resource = db_values[0].resource db_param_name = db_values[0].param_name - db_resource.param_values.create(:value => add_me.to_s, + db_resource.param_values.create(:value => add_me, :line => line_number, :param_name => db_param_name) } @@ -55,8 +68,7 @@ class Puppet::Parser::Resource::Param end def values_to_remove(db_values) - values = value.is_a?(Array) ? value : [value] - values = values.map { |v| v.to_s } + values = munge_for_rails(value) line_number = line_to_i() db_values.collect do |db| db unless (db.line == line_number && @@ -67,8 +79,7 @@ class Puppet::Parser::Resource::Param end def values_to_add(db_values) - values = value.is_a?(Array) ? value : [value] - values = values.map { |v| v.to_s } + values = munge_for_rails(value) line_number = line_to_i() values.collect do |v| v unless db_values.find { |db| (v == db.value && |
