On Fri, 18 Apr 2008 15:56:32 -0700, "John Lam (IRONRUBY)" <[EMAIL PROTECTED]> said: > > Thanks for doing this work, Brian! This will give me a bunch of things to > look at around the core libs this weekend.
Thanks John! I have encountered some further issues trying to run
activerecord which I will detail in a moment, but firstly I've worked
out what is going on with issue (9) in my previous email:
> (9) Problem with
> activesupport-2.0.2\lib\active_support\core_ext\array\conversions.rb
> - unknown: Cannot cast from 'Microsoft.Scripting.SymbolId' to
> 'Ruby.Builtins.Proc'
> (ArgumentError)
> - This is the offending piece of code in conversions.rb:
>
> def to_param
> map(&:to_param).join '/'
> end
The & operator should call to_proc on the object, but IronRuby is
currently not doing so - I have filed a bug report on RubyForge.
Symbol.to_proc is defined in activesupport in order to support the above
piece of syntactic sugar. "&:some_symbol" is simply shorthand for
"Proc.new { |a| a.some_symbol }", so as a temporary workaround, any such
occurrences in activesupport can be replaced with the latter expression.
Here are some new issues that I have encountered with
activesupport/activerecord:
(1) Missing library stringio
- As a workaround, I copied the pure Ruby implementation from YAML
(this should be in C:\ruby\lib\ruby\1.8\yaml\stringio.rb in the MRI
distribution).
(2) Problem with active_support/core_ext/logger.rb
:0:in `define_around_helper': wrong number or type of arguments for
`module_eval' (ArgumentError)
- There is currently no implementation of module_eval that accepts a
string parameter. As a workaround, I rewrote logger.rb so that it
passes a block to module_eval (see attached logger.rb). John has
mentioned that the eval methods should be coming soon, which would
be very helpful indeed...
(3) Problem with active_support/core_ext/module/attr_internal
:0:in `main': undefined local variable or method
`attr_internal_naming_format='
for Module:Class (NoMethodError)
- The same problem as (2): activesupport defines a method
mattr_accessor which calls module_eval with a string parameter. As a
workaround, I manually defined the accessor
attr_internal_naming_format in attr_internal.rb (see attachment)
(4) Missing method Regexp.quote
- active_support\core_ext\pathname.rb requires the Ruby library
pathname, which in turn calls Regexp.quote.
- Workaround: commented out "require 'pathname'"
(5) Problem with active_support/core_ext/string/iterators.rb
- Logical operators in method arguments won't parse - the following
line is the culprit:
loop { yield(scanner.scan(char) || break) }
- I have filed a bug report in RubyForge. Wayne Kelly has confirmed
that this is a parser bug (incorrect grammar) - see
http://rubyforge.org/tracker/index.php?func=detail&aid=19672&group_id=4359&atid=16798
- As a workaround, I rewrote the above line as:
loop do
s = scanner.scan(char)
if !s
break
end
yield(s)
end
- We are also missing library 'strscan.so' - but StringScanner is
built into IronRuby, so as a workaround, I changed the first line to:
require 'strscan' unless defined?(StringScanner)
More activesupport/activerecord observations should be coming soon. I
will add them to Wayne's TowardsRails Wiki page at some point.
-Brian
attr_internal.rb
Description: application/ruby
logger.rb
Description: application/ruby
_______________________________________________ Ironruby-core mailing list [email protected] http://rubyforge.org/mailman/listinfo/ironruby-core
