Are these essentially GUI apps which otherwise i would write using Objective C or Cocoa (i assume its a standalone language) or QT, GTK etc.
So does this allow me to write apps that have the Mac L&F ?
Yes. MacRuby works well with Interface Builder (the GUI designer for the Mac) and lets you write pretty much anything you could with Obj-C, just quicker :)
There's also the ability to package your MacRuby app as a .app that can be distributed without requiring MacRuby to be installed (MacRuby not required to run the packaged app), but the size of the .app is much larger than an equivalent Obj-C version
There are clean, high-level Ruby wrappings of UIKit classes, see HotCocoa: http://macruby.com/hotcocoa.html, although it's not clear to me how extensive this part of MacRuby is.
> In MacRuby, the primitive Ruby classes (e.g., String, Array, and Hash) have been re-implemented on top of their Cocoa equivalents (respectively, NSString, NSArray, and NSDictionary). As an example, all strings in MacRuby are Cocoa strings, so they can be passed directly to underlying C or Objective-C APIs. It is also possible to call any method of the String interface on any Cocoa string, subclass Objective-C methods, etc.
Interesting. Anyone used macruby, and would like to share experiences.
1. How is the learning curve for a ruby programmer ?
2. Are using the String and other core classes just the same as ruby, or more difficult / cumbersome.
3. Can you reuse code from pure ruby apps, or does this re-implementation cause issues/problems.
None. MacRuby is an implementation of Ruby 1.9. A very fast Ruby implementation, but, not a completely new language thats only similar. HotCocoa is a gem. A very useful gem that should be the first thing you install, but, a gem.
2. Are using the String and other core classes just the same as ruby, or more difficult / cumbersome.
Just as easily.
3. Can you reuse code from pure ruby apps, or does this re-implementation cause issues/problems.
Sure. Go for it. It is Ruby, after all. Just with an optional gem to access another framework, in this case, Cocoa.