Thanks for your answer. I followed your advice, and indeed, it works quite 
nicely. However, in the meantime, I filed a ticket reporting the bug to the 
MacRuby project. And the bug is already fixed (thanks Watson1978). A commit has 
been added today with the fix. The latest nightly doesn't yet include the fix, 
but tomorrow's should. So I built MacRuby from source, and I can confirm that 
the short sample session that I quoted yesterday now works fine. I can't 
preclude other bugs to show up downstream, but I have no reason to suspect so.

So I now have two working options, between MCPKit and Sequel. MacRuby at its 
best.

For reference, the short version of the recipe for MCPKit is:

- Download the source code for Sequel Pro and open the included Xcode project. 
Sequel Pro uses Interface Builder plugins which are not support in Xcode 4. 
However, we won't build Sequel Pro, and it's OK here to use Xcode 4. I used 
Xcode 4.2

- Out of the 8 or so targets included in the Sequel Pro Xcode project, choose 
the framework target named MCPKit

- As of today, this target specifies an old SDK. In the target settings, switch 
the SDK to the latest SDK (10.7 under Lion for me).

- As of today, this target is set up as incompatible with GC. This doesn't work 
with MacRuby. Switch that target setting to "Supported". This setting is 
"Objective-C Garbage Collection" in the "Apple LLVM Compiler 3.0 - Language" 
section.

- The "Installation Directory" setting (in the "deployment" section) is set for 
installing the framework as a private framework in the application bundle. This 
works for me. If you want to install the framework system-wide, you'll have to 
change this.

- Build the target and copy the output package (MCPKit.framework) to your 
MacRuby source code directory.

- You can close the Sequel Pro Xcode project. Switch to your MacRuby Xcode 
project.

- Go to your app target "Build Phases" tab, and open the "Link Binary With 
Libraries" section. Click the + button to add the framework. In the library 
selection sheet, click "Add Other…" and select the MCPKit.framework package.

- Click the big + button at the bottom right of the Build Phases pane to add a 
new Copy Files phase. Select "Frameworks" in the new Copy Phase destination pop 
up menu. Drag the MCPKit.framework from your project source list to the Copy 
Phase file list (or alternatively use the + button).

- That's it.

This recipe actually works for any external private framework.

Jean-Denis



On 16 nov. 2011, at 19:28, 
<macruby-devel-requ...@lists.macosforge.org<mailto:macruby-devel-requ...@lists.macosforge.org>>
 wrote:

Message: 3
Date: Wed, 16 Nov 2011 17:29:18 +0000
From: Steve Clarke <st...@sclarkes.me.uk<mailto:st...@sclarkes.me.uk>>
To: "MacRuby development discussions."
<macruby-devel@lists.macosforge.org<mailto:macruby-devel@lists.macosforge.org>>
Subject: Re: [MacRuby-devel] symbol not found: _rb_str_freeze
Message-ID: 
<60d7ae97-7d34-481a-bd2e-e17b8b7ca...@sclarkes.me.uk<mailto:60d7ae97-7d34-481a-bd2e-e17b8b7ca...@sclarkes.me.uk>>
Content-Type: text/plain; charset=windows-1252

Hi Jean-Denis,

I can't answer your question directly but I may be able to help a bit. I also 
want to use mysql with `MacRuby.  I tried mysql gem version 2.8.1 and hit 
problems I couldn't work around.  I also tried ruby-mysql 2.9.4.  I did get 
that to work after some mods, but it was very slow to load and didn't seem 
totally reliable.

I then decided to use an Objective-C framework that accesses SQL.  Sequel Pro 
contains such a framework called MCPKit and it's open source.  This means no 
gems so it loads v quickly.  However, the version of MCPKit that I downloaded 
had manual memory management so wouldn't link with a MacRuby app.  I don't know 
much about Objective-C but I thought I would just try recompiling MCPKit with 
ARC and garbage collection.  To my surprise and delight it worked.  I'm afraid 
I don't know how robust this approach is likely to be.  Maybe I've just been 
lucky.  It would be interesting to hear from someone who understands memory 
management better than me.

Steve


On 16 Nov 2011, at 15:33, Jean-Denis MUYS wrote:

Hi,

I have a big showstopper with my app: sequel with the mysql gem fails with the 
following error message:

dyld: Symbol not found: _rb_str_freeze
Referenced from: /Library/Frameworks/MacRuby.frameword/[?]/mysql_api.bundle

This is mentioned on the net on the sequel project back in february. The 
diagnostic of the sequel developer was that this is a bug in MacRuby.

I am using MacRuby nightly latest as of November 17, 2011, which reports its 
version as 0.12
I have mysql gem version 2.8.1
I have sequel gem version 3.29.0

Steps to reproduce in macirb:

require 'ruby gems'
require 'sequel'
DB = Sequel.connect(:adapter => 'mysql', :user => 'root', :host => 'localhost', 
:database => 'test', :password => 'your password')
DB.tables

Is there any workaround/ easy fix?

I would appreciate any suggestion, including of alternate gems to use.

Jean-Denis

_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to