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 <m...@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@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@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
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel