You can subscribe to this list here.
| 2002 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(3) |
Nov
|
Dec
(2) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(1) |
Feb
(11) |
Mar
(9) |
Apr
(1) |
May
(5) |
Jun
(5) |
Jul
(4) |
Aug
(3) |
Sep
(15) |
Oct
(8) |
Nov
(9) |
Dec
(11) |
| 2004 |
Jan
(5) |
Feb
(2) |
Mar
(1) |
Apr
(3) |
May
(6) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
|
Dec
(3) |
| 2005 |
Jan
(1) |
Feb
(7) |
Mar
(6) |
Apr
(36) |
May
(20) |
Jun
(42) |
Jul
(21) |
Aug
(12) |
Sep
(56) |
Oct
(5) |
Nov
(55) |
Dec
(53) |
| 2006 |
Jan
(43) |
Feb
(83) |
Mar
(98) |
Apr
(42) |
May
(68) |
Jun
(55) |
Jul
(50) |
Aug
(104) |
Sep
(13) |
Oct
(70) |
Nov
(37) |
Dec
(42) |
| 2007 |
Jan
(56) |
Feb
(18) |
Mar
(43) |
Apr
(80) |
May
(65) |
Jun
(149) |
Jul
(103) |
Aug
(71) |
Sep
(62) |
Oct
(67) |
Nov
(72) |
Dec
(63) |
| 2008 |
Jan
(64) |
Feb
(63) |
Mar
(31) |
Apr
(42) |
May
(71) |
Jun
(62) |
Jul
(37) |
Aug
(25) |
Sep
(5) |
Oct
(2) |
Nov
(7) |
Dec
(14) |
| 2009 |
Jan
(20) |
Feb
(15) |
Mar
(19) |
Apr
(8) |
May
(7) |
Jun
|
Jul
(37) |
Aug
(12) |
Sep
(19) |
Oct
(5) |
Nov
(1) |
Dec
(4) |
| 2010 |
Jan
(5) |
Feb
(24) |
Mar
(16) |
Apr
(9) |
May
(4) |
Jun
|
Jul
|
Aug
(6) |
Sep
(2) |
Oct
(1) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
(1) |
Sep
(2) |
Oct
|
Nov
(5) |
Dec
|
| 2016 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2017 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2018 |
Jan
|
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
|
From: Jonathan P. <jp...@dc...> - 2006-02-16 11:20:22
|
On 16 Feb 2006, at 0:03, Rod Schmidt wrote: > Are any of you small developers and using RubyCocoa in commercial > apps that you are actually selling? I'm not yet, I'm afraid. However, as a contributor to the RubyCocoa project I'd be interested in hearing how you're using it in your application. For example, is the whole app RubyCocoa, or is it mainly RubyCocoa with some Objective C bits, or mainly Objective C with some RubyCocoa bits. Why did you decide to use RubyCocoa? Thanks, Jonathan |
|
From: Rod S. <rsc...@xm...> - 2006-02-16 00:04:22
|
Are any of you small developers and using RubyCocoa in commercial apps that you are actually selling? I am and am interested in getting a group together to discuss RubyCocoa on the CocoaRadio podcast. If you're interested then drop me a line at rsc...@xm... Rod Schmidt infiniteNIL Software www.infinitenil.com |
|
From: Jonathan P. <jp...@dc...> - 2006-02-13 19:39:18
|
On 13 Feb 2006, at 18:58, David Webster wrote: > I am intending my ruby application to run under different > platforms, but to behave natively. I therefore have created a > number of groups under class groups such as GTK2, COCOA, etc. > There are some files with the same file name under different group > folders, which shouldn't be a problem. Eg: > > /GTK2/AppController.rb > /COCOA/AppController.rb > > The problem is that when XCode builds the .app package, it copies > all the ruby files flatly into the Resources folder and does not > preserve the folder hierarchy, meaning that some files get > overwritten. Is there a way to make XCode preserve the source > folder hierarchy? A couple of solutions come to mind: (1) Add the root folders (GTK2 etc) as "Create Folder References" rather than "Recursively create groups for any added folders". You'll no longer have control over what files show up in the project (just everything in the directory will - including .svn directories etc), but they will get copied in their entirety and the hierarchy will be preserved. (2) Add the files individually as normal, creating Xcode groups as you wish. Go into the project Targets and "New copy files build phase". Edit properties for the build phase and choose Destination: Resources and Path: "GTK2" etc. You can rename the build phase too. Drag the files from the default "Copy Bundle Resources" build phase into the new copy files phase. Repeat for other folders. You could also rename your files so there's no conflict, and pick the appropriate classes at run time (e.g., selecting between GTKAppController and CocoaAppControler). :) Hope that helps, Jonathan |
|
From: David W. <da...@da...> - 2006-02-13 18:58:25
|
I am intending my ruby application to run under different platforms, but to behave natively. I therefore have created a number of groups under class groups such as GTK2, COCOA, etc. There are some files with the same file name under different group folders, which shouldn't be a problem. Eg: /GTK2/AppController.rb /COCOA/AppController.rb The problem is that when XCode builds the .app package, it copies all the ruby files flatly into the Resources folder and does not preserve the folder hierarchy, meaning that some files get overwritten. Is there a way to make XCode preserve the source folder hierarchy? Thanks, Dave |
|
From: Jonathan P. <jp...@dc...> - 2006-02-11 14:25:14
|
On 11 Feb 2006, at 9:20, Jonathan Paisley wrote:
> Passing a plain Ruby doesn't work because it gets a new (and
> therefore unique) ObjC wrapper object each time it gets passed to
> Cocoa-land. I'm not 100% sure about this -- will investigate.
The problem described above is an issue. However, even if it were
modified it doesn't really help[*].
Make your model objects - Project in your example - subclasses of
NSObject and pass them directly as items to NSOutlineView. If you
don't like having to do the 'alloc.init' dance, you can make a wrapper:
class Project < OSX::NSObject
def self.new(*args)
self.alloc.init(*args)
end
...
end
[*] NSOutlineView doesn't retain items, so the persistent objc
wrapper for the ruby object gets released but is still referenced by
NSOutlineView - boom
|
|
From: Jonathan P. <jp...@dc...> - 2006-02-11 09:21:14
|
On 10 Feb 2006, at 22:48, Dave Howell wrote:
> currentItem = @outlineView.itemAtRow(@outlineView.selectedRow)
> currentProject = Project.index(currentItem.to_i)
> newProject = currentProject.newProject('Unnamed')
>
> [I'm not passing Ruby objects to the outlineView, just ID numbers.)
> If I now ask
>
> @outlineView.isExpandable(currentItem)
>
> it's "false," no surprise there. Specifically, it's "0". If I try
> to update the view, things actually get worse....
>
> @outlineView.reloadItem(currentItem)
> @outlineView.isExpandable(currentItem)
I think the problem is due to the way items are handled across the
ruby-cocoa bridge.
Cocoa identifies outline view items by ObjC object identity. Although
you are passing ID numbers, they get converted to instances of
NSDecimalNumber. For example, each time ID number '10' is passed,
it'll get a different NSDecimalNumber instance. Therefore, Cocoa will
never think you're referring to the same item.
Try making your items a Ruby subclass of NSObject and passing them
directly, if that's possible. That will ensure the same ObjC instance
is used for each item.
Passing a plain Ruby doesn't work because it gets a new (and
therefore unique) ObjC wrapper object each time it gets passed to
Cocoa-land. I'm not 100% sure about this -- will investigate.
Jonathan
|
|
From: Dave H. <gr...@gr...> - 2006-02-10 22:49:04
|
I have an outline display, with a convenient "+" button nearby. When I
click the +, I want a new item to appear "underneath" my currently
selected row, the current row to expand to expose the new item, and to
select the new item.
I create the new item just fine, but I can't select the new thing
because I can't expand the old thing. I can't expand the old thing
because Cocoa doesn't know that it's expandable yet.
*IF* it already had an item underneath it, collapsed or not, then
everything works find. It's only when it isn't an expandable item when
I start that I get stuck.
currentItem = @outlineView.itemAtRow(@outlineView.selectedRow)
currentProject = Project.index(currentItem.to_i)
newProject = currentProject.newProject('Unnamed')
[I'm not passing Ruby objects to the outlineView, just ID numbers.) If
I now ask
@outlineView.isExpandable(currentItem)
it's "false," no surprise there. Specifically, it's "0". If I try to
update the view, things actually get worse....
@outlineView.reloadItem(currentItem)
@outlineView.isExpandable(currentItem)
Now the answer's "-1". "reloadItem" sets "needsDisplay" on the view,
and it appears that "-1" is code for "this view's current status is not
known."
OK, fine.
self.window.display
Nope, doesn't help. Nothing happens until my entire little method has
completed. The reload and display doesn't actually happen until Cocoa
walks back through the input event loop, which it doesn't do until my
code is done executing. :/ How can I get my code to *wait* until the
reload/refresh/update/display has actually occurred? Or put another
way, how can I get Cocoa to NOT wait to update the display? I don't
know where to look for that sort of thing.
|
|
From: Jonathan P. <jp...@dc...> - 2006-02-09 09:17:44
|
On 9 Feb 2006, at 8:59, Yvon Thoraval wrote:
> having, by default three checkboxes (NSButton) a separator two
> Cancel and Save buttons at the bottom.
>
> i'd like to programatically insert new checkboxes between the last
> default one and the separator.
I don't know the answer to this one. However, since it's not specific
to Ruby, you can probably get assistance from a much wider audience
at one of the Cocoa-specific mailing lists or web sites. For example:
http://lists.apple.com/mailman/listinfo/cocoa-dev
Cheers,
Jonathan
|
|
From: Yvon T. <tho...@fr...> - 2006-02-09 09:00:59
|
Hey all, i've a prefs sheet having, by default three checkboxes (NSButton) a separator two Cancel and Save buttons at the bottom. i'd like to programatically insert new checkboxes between the last default one and the separator. i'd like having some advices on how to do that. should i first group the default check boxes , could this facilitate inserting others ? when i insert new NSButtons, is the sheet height following or does i have to do something to resize it ? any help will be apreciated. Yvno |
|
From: Yvon T. <tho...@fr...> - 2006-02-08 11:43:28
|
Le 8 f=E9vr. 06 =E0 11:01, Jonathan Paisley a =E9crit :
>
> I'm confused - isn't it just about the same? You're calling through =20=
> to the same Cocoa methods underneath. Could you give an example of =20
> the differences in complexity?
>
ruby-side open a sheet :
def prefsSheetOpen(sender)
OSX::NSApp=20
().beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo=20
(@prefsSheet, @mainWindow, self, nil, nil)
end
java-side open a sheet :
public void bottleSheetViewOpen() {
=
NSApplication.sharedApplication().beginSheet(bottleSheetView, =20
mainWindow,null,null,null);
}
i don't understand clearly why this part =20
"_modalForWindow_modalDelegate_didEndSelector_contextInfo" is needed =20
for ruby...
oups i see in java you might have more than one method named =20
"beginSheet" depending on args number and types, afaik, in ruby it =20
isn't possible, the reason for...
somehow rubyCocoa syntax is closer to ObjC ones than Java...
best,
Yvon=
|
|
From: Jonathan P. <jp...@dc...> - 2006-02-08 10:01:58
|
On 7 Feb 2006, at 22:30, Yvon Thoraval wrote: > Le 7 f=E9vr. 06 =E0 23:24, Jonathan Paisley a =E9crit : > >> Don't call 'runModalForWindow' and it should work. > > yes ok this works, thanks ! > > i'm surprised that the way to use cocoa thru ruby is more =20 > complicated than thru java... I'm confused - isn't it just about the same? You're calling through =20 to the same Cocoa methods underneath. Could you give an example of =20 the differences in complexity? Cheers, Jonathan |
|
From: Yvon T. <tho...@fr...> - 2006-02-07 22:31:31
|
Le 7 f=E9vr. 06 =E0 23:24, Jonathan Paisley a =E9crit : > Don't call 'runModalForWindow' and it should work. > yes ok this works, thanks ! i'm surprised that the way to use cocoa thru ruby is more complicated =20= than thru java... best Yvon= |
|
From: Yvon T. <tho...@fr...> - 2006-02-07 22:26:38
|
Le 7 f=E9vr. 06 =E0 20:49, Yvon Thoraval a =E9crit : > i suppose i need to add something to get access back to the =20 > mainWindow ? > yes just add : OSX::NSApp().stopModal() in order to counter-balanced the runModalForWindow (Luc Heinrich) best Yvon= |
|
From: Jonathan P. <jp...@dc...> - 2006-02-07 22:25:09
|
On 7 Feb 2006, at 19:49, Yvon Thoraval wrote: > something strange : i'm able to open and close a sheet but after > having closed it i've no more acces to the mainWindow buttons even > the main menu quit... > > here is the way i open it : > > def prefsSheetOpen(sender) > OSX::NSApp > ().beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo( > @prefsSheet, @mainWindow, self, nil, nil) > OSX::NSApp().runModalForWindow(@prefsSheet) > end Don't call 'runModalForWindow' and it should work. A sheet implicitly grabs focus from the window it is a sheet for. Other windows in the application continue to respond. 'runModalForWindow' grabs focus from all windows in the application to the chosen one (and is rarely needed), and can only be stopped using stopModal and friends (see the documentation). Hope that helps, Jonathan |
|
From: Yvon T. <tho...@fr...> - 2006-02-07 19:50:31
|
Hey all,
something strange : i'm able to open and close a sheet but after
having closed it i've no more acces to the mainWindow buttons even
the main menu quit...
here is the way i open it :
def prefsSheetOpen(sender)
OSX::NSApp
().beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo
(@prefsSheet, @mainWindow, self, nil, nil)
OSX::NSApp().runModalForWindow(@prefsSheet)
end
and the way to close it :
def prefsSheetSave(sender)
p "prefsSheetSave"
OSX::NSApp().endSheet(@prefsSheet)
p "prefsSheetSave"
@prefsSheet.close()
p "prefsSheetSave finished"
end
i suppose i need to add something to get access back to the mainWindow ?
Yvon |
|
From: Yvon T. <tho...@fr...> - 2006-02-07 10:40:56
|
Le 7 f=E9vr. 06 =E0 11:34, Jonathan Paisley a =E9crit : > Having said that, you can wire the button up directly in Interface =20 > Builder without having to add any extra code :) -- try this: > > control-drag from the qutton to "File's Owner" > double click 'terminate:' in the Target/Action list that appears thanks a lot, i didn't know that feature... Yvon= |
|
From: kimura wataru<ki...@us...> - 2006-02-07 10:39:22
|
Hi,
NSApplication#terminate() quits your application.
def quitter(sender)
app = OSX::NSApplication.sharedApplication
app.ternimate(sender)
end
Tue, Feb 7, 2006 11:16:20 AM, Yvon Thoraval wrote:
>Hey all,
>
>i've written a first app using RubyCocoa, in this app i've a button
>"Quit" whose action is "quitter" the method "quitter" within
>Controller.rb, is "simply" :
>
> def quitter(sender)
> exit 0
> end
>
--
kimura wataru
|
|
From: Jonathan P. <jp...@dc...> - 2006-02-07 10:35:24
|
On 7 Feb 2006, at 10:16, Yvon Thoraval wrote: > Hey all, > > i've written a first app using RubyCocoa, in this app i've a button > "Quit" whose action is "quitter" the method "quitter" within > Controller.rb, is "simply" : > > def quitter(sender) > exit 0 > end Try: OSX::NSApplication.sharedApplication.terminate(nil) You can see the documentation for this method in Xcode's Documentation window by searching for 'terminate:'. Having said that, you can wire the button up directly in Interface Builder without having to add any extra code :) -- try this: control-drag from the qutton to "File's Owner" double click 'terminate:' in the Target/Action list that appears That's it! |
|
From: Yvon T. <tho...@fr...> - 2006-02-07 10:17:12
|
Hey all, i've written a first app using RubyCocoa, in this app i've a button "Quit" whose action is "quitter" the method "quitter" within Controller.rb, is "simply" : def quitter(sender) exit 0 end i think this is, by far, not properly done, because, when i use this button i get : /Users/yvon/work/RubyCocoa/AB2Web/build/Development/AB2Web.app/ Contents/Resources/Controller.rb:171:in `NSApplicationMain': NSApplicationMain - RBException_SystemExit - exit (OSX::OCException) from /Users/yvon/work/RubyCocoa/AB2Web/build/Development/AB2Web.app/ Contents/Resources/rb_main.rb:49 AB2Web has exited with status 1. line 171 of Controller.rb being "exit 0" and rb_main.rb : 49 being : if $0 == __FILE__ then rb_main_init OSX.NSApplicationMain(0, nil) ### line 49 end then what's the correct way to quit (no files to save) ? surprisingly, i've noticed that in "" their is no application avec a button for quitting why ? best, Yvon |
|
From: Tom M. <tmo...@in...> - 2006-02-05 06:48:18
|
I have a commercial development project that I think would be perfect for Ruby Cocoa. Are there any accomplished programmers for hire that are looking for contract work? -- -- Tom Mornini |
|
From: Yvon T. <tho...@fr...> - 2006-02-04 18:54:29
|
Le 4 f=E9vr. 06 =E0 19:10, Jonathan Paisley a =E9crit : > > XCode documentation tells me there's no method called 'addItem' on =20 > NSPopUpButton. There is 'addItemWithTitle' though. Can you try it? > > yes, fine thanks, it works ;-) the reason for addItem it's becaus it does exist on the Cocoa-Java =20 side )) i've made use of AppKiDo.app in order to browse classes/methods...= |
|
From: Jonathan P. <jp...@dc...> - 2006-02-04 18:11:41
|
On 4 Feb 2006, at 9:14, Yvon Thoraval wrote:
> i'm starting within RubyCocoa, although i've been using Cocoa-Java,
> i want to setup the items of an NSPopUpButton programmatically.
>
> if i list all the associated methods by :
>
> ctm...@ch...
> ctmethods.each { |m| p "choixTheme #{m}"}
>
> i never get even the "titleOfSelectedItem" nor "indexOfSelectedItem"
> why ?
The 'methods' method lists plain Ruby methods. The Objective C
methods are implemented via the method_missing hook, and therefore
don't show up like that.
There is an 'objc_methods' method provided by RubyCocoa, but it had a
bug which was fixed in CVS a couple of days ago. Your version may not
have this fix yet.
> @choixTheme.addItem("Unbelievable")
> i get an error :
> /Library/Frameworks/RubyCocoa.framework/Versions/A/Resources/ruby/
> osx/objc/oc_wrapper.rb:17:in `NSApplicationMain': NSApplicationMain
> - RBException_OSX::OCMessageSendException - NSPopUpButton#addItem:
> - methodSignature is nil. (OSX::OCException)
>
> then, what's the correct way to setup all the items of a
> NSPopUpButton programmatically ?
XCode documentation tells me there's no method called 'addItem' on
NSPopUpButton. There is 'addItemWithTitle' though. Can you try it?
|
|
From: Yvon T. <tho...@fr...> - 2006-02-04 09:14:45
|
Hey all,
i'm starting within RubyCocoa, although i've been using Cocoa-Java, i
want to setup the items of an NSPopUpButton programmatically.
the related named ib_outlets is called ":choixTheme"
if i list all the associated methods by :
ctm...@ch...
ctmethods.each { |m| p "choixTheme #{m}"}
i never get even the "titleOfSelectedItem" nor "indexOfSelectedItem"
why ?
if i try :
@choixTheme.addItem("Unbelievable")
i get an error :
/Library/Frameworks/RubyCocoa.framework/Versions/A/Resources/ruby/osx/
objc/oc_wrapper.rb:17:in `NSApplicationMain': NSApplicationMain -
RBException_OSX::OCMessageSendException - NSPopUpButton#addItem: -
methodSignature is nil. (OSX::OCException)
then, what's the correct way to setup all the items of a
NSPopUpButton programmatically ?
best,
Yvon |
|
From: Jonathan P. <jp...@dc...> - 2006-02-03 09:40:25
|
On 2 Feb 2006, at 23:53, Tim Burks wrote: > To illustrate it, I've written a small article that shows how to wrap > Dave Thomas' jukebox example with rubycocoa. It is online here: > > http://www.rubycocoa.com/ruby-extensions-with-rubycocoa > > Please take a look sometime and send me any thoughts or suggestions. This looks cool. > Memory deallocation is handled the Cocoa way rather than the Ruby =20 > way. So even though we=92ve gotten rid of all references to our =20 > jukebox object, it=92s not deleted until the Objective-C runtime =20 > cleans up. In our example, that happens when we exit irb. Isn't it just that ruby's garbage collector hasn't run yet, and so =20 the Ruby reference to the ObjC object is still around? Try putting =20 GC.start before exiting and see if that forces the deallocation. I've just been playing with RubyInline for simple C interfacing. I =20 wanted to register a global hotkey, which requires accessing Carbon =20 event APIs. Here's a nippet of the code: class Controller < NSObject def self.shared_instance @instance ||=3D Controller.alloc.init end inline do |builder| builder.src_ext =3D "m" builder.prefix %q{ #undef T_DATA } # required because Ruby and Quicktime both define T_DATA builder.include "<Carbon/Carbon.h>" builder.prefix %q{ EventHotKeyRef gMyHotKeyRef; EventHotKeyID gMyHotKeyID; static OSStatus MyHotKeyHandler(EventHandlerCallRef =20 nextHandler,EventRef theEvent,void *userData) { rb_eval_string("Controller.shared_instance.hotkey_pressed"); return noErr; } } builder.c_singleton %q{ void register_key(int keycode) { EventTypeSpec eventType; eventType.eventClass=3DkEventClassKeyboard; eventType.eventKind=3DkEventHotKeyPressed; InstallApplicationEventHandler(&MyHotKeyHandler,=20 1,&eventType,NULL,NULL); gMyHotKeyID.signature=3D'WBCM'; // choose something here gMyHotKeyID.id=3D1; RegisterEventHotKey(keycode, cmdKey, gMyHotKeyID, =20 GetApplicationEventTarget(), 0, &gMyHotKeyRef); } } end def hotkey_pressed ... end end # During initialisation... Controller.register_key --- inline.rb 1970-01-01 01:00:00.000000000 +0100 +++ ../inline.rb 2006-02-03 09:14:59.000000000 +0000 @@ -260,6 +260,7 @@ public + attr_accessor :src_ext def initialize(mod) raise ArgumentError, "Class/Module arg is required" unless =20 Module =3D=3D=3D mod # new (but not on some 1.8s) -> inline -> real_caller|eval @@ -276,6 +277,7 @@ @sig =3D {} @flags =3D [] @libs =3D [] + @src_ext =3D "c" end ## @@ -310,7 +312,7 @@ unless so_exists and File.mtime(rb_file) < File.mtime(so_name) =09 - src_name =3D "#{Inline.directory}/#{module_name}.c" + src_name =3D "#{Inline.directory}/#{module_name}.#{src_ext}" old_src_name =3D "#{src_name}.old" should_compare =3D File.write_with_backup(src_name) do |io| io.puts |
|
From: Tim B. <tim...@gm...> - 2006-02-02 23:53:30
|
One of my favorite things about rubycocoa is how easily I can use it to call C code from Ruby. It's perhaps an obvious advantage, but an underappreciated one as well. To illustrate it, I've written a small article that shows how to wrap Dave Thomas' jukebox example with rubycocoa. It is online here: http://www.rubycocoa.com/ruby-extensions-with-rubycocoa Please take a look sometime and send me any thoughts or suggestions. thanks! Tim |