rails new example mysql ruby-on-rails ruby gem

new - Ruby: mysql2-Gem no funciona(Mac OS X Snow Leopard, Ruby 1.9.2)



ruby on rails mysql configuration (6)

Acabo de compilar ruby ​​e installes rubygems, mysql2 y rails, que funcionaron bastante bien. Pero recibo el siguiente mensaje de error, cada vez que intento iniciar el servidor de rieles:

/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require'': dlopen(/usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError) Referenced from: /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `require'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:68:in `block (2 levels) in require'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `each'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66:in `block in require'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `each'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler.rb:120:in `require'' from /Users/filzo/Documents/rails/blog/config/application.rb:7:in `'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `require'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:28:in `block in '' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `tap'' from /usr/local/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.5/lib/rails/commands.rb:27:in `'' from script/rails:6:in `require'' from script/rails:6:in `''

Probé varias soluciones posibles (p. Ej., Esto: http://railsforum.com/viewtopic.php?pid=23125#23125 con libmysqlclient.18.dylib); Pero nada me funcionó. Espero que puedas ayudarme.

EDITAR: Parece que esto solucionó el problema para mí:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/ruby/lib/ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

De todas formas; ¿Es un error en el MySQL o el código ruby?


Esto parece ser un error conocido (¡y no arreglado!) En la distribución binaria de MySQL .

Mientras ejecutas install_name_tool en tus archivos mysql2.bundle funcionarán, si los eliminas y los reconstruyes, volverás al punto uno. Además, tendrás que aplicar esta corrección a cualquier otra cosa que se vincule en su contra. Una mejor solución es solucionar el problema en la propia biblioteca:

$ sudo install_name_tool -id / /usr/local/mysql/lib/libmysqlclient.18.dylib / /usr/local/mysql-5.5.12-osx10.6-x86_64/lib/libmysqlclient.18.dylib

Eliminando y reconstruyendo la gema mysql2:

$ gem uninstall mysql2 $ gem install mysql2

... recogerá el cambio en la biblioteca, y todo debería funcionar correctamente, sin tener que jugar con ninguna variable de entorno.


Intente hacer este enlace simbólico, para que rake pueda encontrar la biblioteca de cliente MySQL correcta.

ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


No estoy seguro de si esto ayudará o no, pero estoy usando OS X 10.7.1 Lion. En mi caso, abrí una ventana de terminal, fui a /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7 y tan pronto como lo hice, RVM ladró diciendo que había encontrado un archivo .rvmrc nuevo o modificado. El contenido de ese archivo fue:

rvm use 1.9.2@mysql2 --create

Me preguntó si quería confiar en este archivo .rvmc. Dije que sí, y le devolví lo siguiente:

Using /Users/dan/.rvm/gems/ruby-1.9.2-p290 with gemset mysql2

Una vez que lo hice, ejecuté el siguiente comando:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle

Una vez que lo hice, estaba listo para irme. ¡Espero que esto ayude!


Si está usando RVM (una excelente opción) en Mac OS X, aquí está el comando mágico que finalmente funcionó para mí.

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/*USERNAME*/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

Reemplace USERNAME en la sintaxis de manera apropiada según su configuración actual. Y si tu versión de mysql gem es diferente, cambia eso también.


Una alternativa mejor a la herramienta install_name es agregar una ruta de acceso al lib de mysql a su variable de entorno DYLD_LIBRARY_PATH. En / etc / perfil:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib

O, como también tengo instalado Oracle Instant Client, haga lo siguiente:

export ORACLE_HOME="/usr/local/oracle/instantclient_10_2" export DYLD_LIBRARY_PATH=$ORACLE_HOME export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib