Getting method parameters in specified order

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)
  ...
end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby? Something similar
to the following PHP snippet,

$a = new ReflectionFunction("function_name");
$a->getParameters();

Thanks in advance,

Bye,

    -Chintana

···

--

I think we cant do more than this:

irb(main):001:0> def test(a, b, c)
irb(main):002:1> end
=> nil
irb(main):003:0> method(:test).arity
=> 3

···

--
Bernardo Rufino

There is not; as Bernardo said, Ruby only allows you to check the
arity of the method.

I had a need for this, too. (I was working on a project that allowed
developers to provide arbitrary Ruby-based plugins, and the GUI of the
application needed to expose the methods and their paramters
visually.)

For that need, I wrote this:
http://phrogz.net/RubyLibs/rdoc/classes/DescribeMethods.html

···

On Dec 12, 11:44 pm, Chintana Wilamuna <chinta...@gmail.com> wrote:

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)
  ...
end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby?

Chintana Wilamuna wrote:

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)
  ...
end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby? Something similar
to the following PHP snippet,

$a = new ReflectionFunction("function_name");
$a->getParameters();

Forgive the naive thoughts of a ruby ruby, but what if you accepted an
array as the parameter? You could use any number of elements and you
would always know which is which.

···

--
Posted via http://www.ruby-forum.com/\.

Thanks Bernardo.

Bye,

    -Chintana

···

On Dec 13, 2007 6:36 PM, Bernardo Monteiro Rufino <bermonruf@gmail.com> wrote:

I think we cant do more than this:

irb(main):001:0> def test(a, b, c)
irb(main):002:1> end
=> nil
irb(main):003:0> method(:test).arity
=> 3

--

Forgive the naive thoughts of a ruby ruby...

ruby nuby, I meant. heh

···

--
Posted via http://www.ruby-forum.com/\.

Hi~

Chintana Wilamuna wrote:

Hi,

If I declare a function that expects 3 arguments,

def bar(x, y, z)
...
end

and later, if I have the function name in a string, is there a way to
get the parameter names using reflection in Ruby? Something similar
to the following PHP snippet,

$a = new ReflectionFunction("function_name");
$a->getParameters();

Forgive the naive thoughts of a ruby ruby, but what if you accepted an
array as the parameter? You could use any number of elements and you
would always know which is which.
-- Posted via http://www.ruby-forum.com/\.

  You can accomplish this with the Ruby2Ruby gem. Here is a pastie of some code that can do this for you:

http://pastie.caboo.se/128959

  Here is how you can use it:

~/_merb/merb > irb -r get_args.rb
>> class Foo
>> def hi(a,b,c)
>> p a,b,c
>> end
>> end
=> nil
>> Foo.instance_method(:hi).get_args
=> [[:a], [:b], [:c]]
>>

Cheers-

- Ezra Zygmuntowicz
-- Founder & Software Architect
-- ezra@engineyard.com
-- EngineYard.com

···

On Dec 14, 2007, at 4:57 AM, Lloyd Linklater wrote:

# Sent: Thursday, December 13, 2007 11:40 PM
# To: ruby-talk ML
# Subject: Re: Getting method parameters in specified order

···

From: Chintana Wilamuna [mailto:chintanaw@gmail.com]
#
# On Dec 13, 2007 6:36 PM, Bernardo Monteiro Rufino
# <bermonruf@gmail.com> wrote:
#
# > I think we cant do more than this:
# >
# > irb(main):001:0> def test(a, b, c)
# > irb(main):002:1> end
# > => nil
# > irb(main):003:0> method(:test).arity
# > => 3

not part of ruby itself, but try looking at ruby2ruby

kind regards -botp

[snip]

Thanks Botp and Phrogz, I'll look into it.

Bye,

    -Chintana

···

On Dec 14, 2007 8:52 AM, Peña, Botp <botp@delmonte-phil.com> wrote:

--