Issue #4915 has been updated by Andrew  Parker.

Nick, I know this bug is from a long time ago, but functions were always 
supposed to be passed an array when called from ruby code. It was a fluke of 
the function and ruby 1.8 that it sometimes worked. There is a change in 3.0.0 
that asserts that the function is being passed an array.
----------------------------------------
Bug #4915: scope.function_extlookup (in templates) takes an array parameter
https://projects.puppetlabs.com/issues/4915#change-75441

Author: Jordan Sissel
Status: Accepted
Priority: Normal
Assignee: Nick Fagerlund
Category: documentation
Target version: 2.7.x
Affected Puppet version: 2.6.1
Keywords: 
Branch: 


This does not work

<pre>
notice(
  inline_template("<%= Puppet::Parser::Functions.autoloader.loadall; 
scope.function_extlookup('hello world') %>")
)

Error:
  Failed to parse inline template: extlookup(): wrong number of arguments (11; 
must be <= 3) at /home/jls/f.pp:2 on node snack.home
</pre>

Volcane pointed out that extlookup() expects an array, which made the '11' 
above pretty obvious as 'hello world'.size == 11.

This version works:

<pre>
notice(
  inline_template("<%= Puppet::Parser::Functions.autoloader.loadall; 
scope.function_extlookup(['hello world']) %>")
)

Output:
notice: Scope(Class[main]): Hello sir!
</pre>

---

Possible fix: Make extlookup check if the type given is a string, and if so, 
treat it normally.



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to