RubyCocoa 0.11.1


I am honored to announce the immediate release of RubyCocoa 0.11.1.

RubyCocoa is a Mac OS X framework that allows Cocoa programming in the
object-oriented scripting language Ruby. In other words, it is a
bridge that let you access Objective-C objects from Ruby, and

You can learn more about RubyCocoa on our new website:

This release fixes several bugs and regressions introduced by the
previous release (0.11.0). Some features have been added though. All
users are encouraged to upgrade.

Following are the release notes. Enjoy!

The RubyCocoa Team


  • Added a convenience Ruby → Objective-C shortcut, to translate #foo=
    calls as #setFoo.
  • Introduced OSX::Boxed.size, a convenience method to get the size of
    the boxed C type.
  • Introduced ActiveRecordProxy#initWithRecord which returns a proxy
    for an existing record, and ActiveRecordProxy#initWithAttributes which
    creates a record with the attributes and returns a proxy.
  • Added some convenience API to pack/unpack Pascal strings:
    String#unpack_as_pstring and Array#pack_as_pstring.
  • New sample: Scripts/darkroom.rb.


  • It’s now possible to generate the frameworks RDoc files using the
    latest hpricot version (0.5).
  • Fixed a bug in the ActiveRecord binding, where #to_ruby could be
    called on a nil object.
  • Misc sample code updates.
  • Fixed several bugs when passing already-allocated boxed structures
    as output arguments.
  • Added setter support for _C_ARY types, fixed existing getter support.
  • Fixed the ActiveRecordProxy#init method, it now takes no arguments.
  • Do not enable direct-override for ruby-derived classes.
  • In the ActiveRecord table view scaffold, when removing all table
    columns, make sure to iterate on a duplicate array to not mutate the
    original one during the enumeration.
  • When auto-overriding Objective-C methods, before doing the override
    compare the methods arity and raise an exception if they are not the
  • Fixed NSString#length to return the real number of characters.
  • Fixed minor issues related to passed-by-reference arguments declared
    between regular arguments.
  • Do not raise an exception when passing a String object as a C
    characters pointer (_C_CHARPTR).
  • ActiveRecordTableView#scaffold_columns_for will now set
    NSTableColumn#identifier to the name of the attribute so you can use
    this to check which column it is.
  • Added metaclass methods #find & method_missing which handles
    #find_by_foo to the ActiveRecordProxy, which works as normal but
    returns proxies for the results.
  • Optimized model class resolve method. Now also caches it.
  • Removed method_missing implementation in the active record proxy,
    instead we now define all the methods available.
  • When converting Objective-C objects to Ruby, do not cache those
    being converted in an Objective-C callback (either FFI closure or
    NSInvocation), because there is no way to clear the cache after.
  • Fixed NSApplication.run_with_temp_app.