[MacRuby-devel] MacRuby not finding a method that Ruby is

Matt Aimonetti mattaimonetti at gmail.com
Wed Oct 7 19:51:17 PDT 2009


you might want to try your luck with 0.5

- Matt

On Wed, Oct 7, 2009 at 7:37 PM, Edward Hynes <mred at dharmagaia.com> wrote:

> Hi,
>
> I'm attempting to use the RParsec gem under MacRuby, but am getting a
> NoMethodError when it loads.  I've create a test file that simply adds my
> local gem directory to the front of the library search path and then calls
> "require 'rparsec'".  This file runs fine under Ruby 1.9, but produces the
> following error when called from MacRuby 0.4.
>
> /Users/ehynes/Test/Gems/rparsec/parser.rb:32:in `block in init': super: no
> superclass method `initialize:' for
> RParsec::ValueParser:RParsec::ValueParser (NoMethodError)
>        from /Users/ehynes/Test/Gems/rparsec/parsers.rb:621:in `new'
>        from /Users/ehynes/Test/Gems/rparsec/parsers.rb:621:in
> `<module:RParsec>'
>        from /Users/ehynes/Test/Gems/rparsec/parsers.rb:3:in `<top
> (required)>'
>        from /Users/ehynes/Test/Gems/rparsec.rb:3:in `require'
>        from /Users/ehynes/Test/Gems/rparsec.rb:3:in `block in <top
> (required)>'
>        from /Users/ehynes/Test/Gems/rparsec.rb:2:in `each'
>        from /Users/ehynes/Test/Gems/rparsec.rb:2:in `<top (required)>'
>        from AbcParser.rb:2:in `require'
>        from AbcParser.rb:2:in `<main>'
>
>
> The method with the error in the Parser class is:
>
>  def self.init(*vars)
>    parser_checker = {}
>    vars.each_with_index do |var, i|
>      name = var.to_s
>      parser_checker[i] = var if name.include?('parser') &&
> !name.include?('parsers')
>    end
>    define_method(:initialize) do |*params|
> --->  super()   # <--- line 32
>      vars.each_with_index do |var, i|
>        param = params[i]
>        if parser_checker.include? i
>          TypeChecker.check_arg_type Parser, param, self, i
>        end
>        instance_variable_set("@"+var.to_s, param)
>      end
>    end
>  end
>
>
> Any ideas as to why Ruby can call super in the above method, but MacRuby
> can't?  Is there a fix or workaround that I could use?  An alternate parser?
>
> Thanks,
> Ed
>
>
> P.S.  I did have to change one line in the RParsec parser.rb file to get it
> to run under Ruby 1.9, replacing a ':' with a 'then' in a case statement.
>
>        $ diff parser_original.rb parser.rb
>        881c881
>        <     case c when String: c[0] else c end
>        ---
>        >     case c when String then c[0] else c end  # ':' replaced with
> 'then'
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20091007/88dca73e/attachment.html>


More information about the MacRuby-devel mailing list