[MacRuby-devel] MacRuby not finding a method that Ruby is
Edward Hynes
mred at dharmagaia.com
Wed Oct 7 21:16:35 PDT 2009
I'm still on a 32-bit machine, so can't try 0.5 yet :^(
I did manage to find a workaround, however, by creating an alias for
the 'initialize' method and then calling it instead of 'super' inside
of the 'define_method' call.
Ed
On Oct 7, 2009, at 10:51 PM, Matt Aimonetti wrote:
> 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
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
--
Edward Hynes
Dharma Gaia LLC
"Software with the Earth in Mind"
http://dharmagaia.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20091008/27b33d90/attachment-0001.html>
More information about the MacRuby-devel
mailing list