11.26
Sim, o autor deste blog continua vivo…
Peço desculpas aos raros leitores, mas este ano foi bastante corrido e, infelizmente, o blog ficou abandonado. Espero escrever com mais frequência.
Alguns dias atrás, o Éverton Ribeiro deu uma super dica em seu blog para quem trabalha com ruby: o Ruby Version Manager (a.k.a RVM). Com ele você pode instalar e gerenciar facilmente várias versões do ruby e criar sets de gems de acordo com as suas necessidades.
Hoje, tivemos problemas para instalar a gem do MySQL em uma versão do ruby instalado pelo RVM. Depois de várias tentativas e vasculhadas na internet, conseguimos entender o problema.
Por padrão, pelo menos no Mac OS X Leopard (64 bits), o RVM instala o ruby com arquitetura x86_64. Entretanto, o MySQL que tinhamos instalado era i386. Sendo assim, a gem simplesmente não funcionava, e exibia o seguinte erro ao tentar usá-la:
$ rake db:migrate (in /private/tmp/mysql_test) dyld: lazy symbol binding failed: Symbol not found: _mysql_init Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle Expected in: flat namespace dyld: Symbol not found: _mysql_init Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle Expected in: flat namespace Trace/BPT trap
A solução
Para verificar a arquitetura do MySQL e do ruby, respectivamente, execute:
$ file $(which mysql) $ file $(which ruby)
A solução foi instalar o MySQL com arquitetura x86_64 e reinstalar a gem do MySQL.
Para isso execute os seguintes passos:
- Se você já tem o MySQL instalado, não esqueça de fazer backup de seus databases e da pasta do MySQL (geralmente /usr/local/mysql).
- Faça download do MySQL para o seu S.O. Não esqueça que a arquitetura tem que ser x86_64. No meu caso, baixei o dmg para Mac OS X 10.5 com a verão 5.1.41.
- Instale ou atualize o MySQL.
- Coloque o seguinte conteúdo no seu arquivo ~/.rvmrc (caso não tenha, crie-o):
- Caso tenha a gem do MySQL instalada, desinstale:
- Instale a gem do MySQL com o seguinte comando (lembre-se que utilizando o RVM não deve-se usar sudo para instalar gems):
rvm_archflags="-arch x86_64"
$ gem uninstall mysql
$ export ARCHFLAGS="-arch x86_64" ; gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Com esses passos, tudo deve funcionar normalmente.
Obrigado ao Éverton e ao Eric Fer que colaboraram para a resolução do problema.
Até a próxima!
Referências:
http://rvm.beginrescueend.com/mysql/
http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/
http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/
Esse é um cara que ‘fais’
Esse post já está devidamente ‘bookmarkado’ como referência para solução #rvm vs #mysql
Show de bola
Ah, e bem-vindo de volta ao fantástico mundo de ‘blog’
Valeu!
Em breve pretendo corrigir o problema com os emoticons.
Olha que cara rápido !!! Emoticons corrigidos