Rails,MySQL和Snow Leopard

con*_*are 68 ruby mysql ruby-on-rails osx-snow-leopard

我使用我们在WWDC上获得的光盘升级到Snow Leopard.

试图运行我的一些rails应用程序现在抱怨sql

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

我可以发誓我曾经修过这个.问题是

sudo gem install mysql
Run Code Online (Sandbox Code Playgroud)

不起作用并给出错误:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out
Run Code Online (Sandbox Code Playgroud)

有没有人得到mysql在雪豹上使用rails呢?如果是这样,你的设置是什么,更好的是,我该怎么做才能重现它?

Ian*_*lby 108

我只是经历了同样的痛苦...这对我有用:

  1. 从mysql.com下载/安装64位MySQL 5.1.37
  2. 运行以下命令:

    sudo gem update --system

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我还卸载了我10.5天内浮动的所有mysql宝石,如果以上对你不起作用,可能会这样做:)


小智 10

将mysql重建为64位或安装64位版本很重要,但您还需要确保将mysql gem的原生部分构建为64位(如果您使用的是其中一个原始的Intel Core Duo mac,则不适用).

这是魔术命令:

env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)

只要在Snow Leopard上使用本机组件进行gem安装,就应该如上所示设置ARCHFLAGS.


Ste*_*oka 7

如果你正在使用bundler,你可以使用"bundle config"为mysql设置正确的构建参数,如下所示:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)


Sam*_*fes 6

我和它一起战斗了很长时间,最后让它在Snow Leopard上工作.我最终从源代码安装了Ruby,RubyGems和MySQL(参见用于安装Ruby和RubyGems 的Hivelogic教程.MQ教程在底部链接).我终于安装了宝石,但我还是得到了

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap
Run Code Online (Sandbox Code Playgroud)

我终于删除了mysql.bundle(我不知道这是为了什么),这一切都奏效了.

sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
Run Code Online (Sandbox Code Playgroud)

希望能帮助别人.