Rails, MySQL et Snow Leopard

J’ai mis à niveau vers Snow Leopard en utilisant le disque que nous avons eu à WWDC.

Essayer de lancer certaines de mes applications de rails se plaint maintenant de 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) 

J’aurais pu jurer que je l’avais réparé une fois auparavant. Le problème est que

 sudo gem install mysql 

ne fonctionne pas et donne l’erreur:

  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 

Quelqu’un at-il déjà eu mysql pour travailler avec des rails sur Snow Leopard? Si oui, quelle est votre configuration et, mieux encore, que puis-je faire pour la reproduire?

Je viens de traverser la même douleur … voici ce qui a fonctionné pour moi:

  1. Téléchargez / installez MySQL 5.1.37 64 bits depuis mysql.com
  2. exécuter les commandes suivantes:

     sudo gem update --system

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

J’ai également désinstallé toutes les gemmes mysql qui circulaient depuis mes 10,5 jours, cela peut le faire si ce qui précède ne fonctionne pas pour vous 🙂

Reconstruire mysql en 64 bits ou installer la version 64 bits est important, mais vous devez également vous assurer que vous construisez les parties natives de la gem mysql en 64 bits (cela ne s’applique pas si vous êtes sur l’un des mac Intel Core Duo d’origine). ).

Voici la commande magique:

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

Vous devez définir ARCHFLAGS comme indiqué ci-dessus chaque fois que vous effectuez une installation avec des composants natifs sur Snow Leopard.

Si vous utilisez un bundler, vous pouvez utiliser “bundle config” pour définir les arguments de construction appropriés pour mysql comme suit:

 bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 

Je me suis battu avec ça pendant longtemps et je l’ai finalement fait travailler sur Snow Leopard. J’ai fini par installer Ruby, RubyGems et MySQL depuis le source (voir le tutoriel Hivelogic pour installer Ruby et RubyGems. Le tutoriel MySQL est lié en bas). J’ai finalement eu le bijou à installer, mais je recevais toujours

 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 

J’ai finalement supprimé mysql.bundle (je ne sais pas à quoi ça sert) et tout a fonctionné.

 sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle 

J’espère que ça aide quelqu’un.

J’ai vu ce problème plusieurs fois. presque chaque fois que je construis mysql sur une machine. Je pense que vous devez passer votre mysqlconfig dans le cadre de la commande gem install.

 sudo gem install mysql -- --with-mysql-config=/your/mysql/config Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby --with-mysql-config 

Rappelez-vous que vous avez besoin des fichiers de développement mysql pour pouvoir construire ce joyau.

J’avais des problèmes pour que ma configuration fonctionne après avoir installé Snow Leopard. J’ai trouvé MAMP sur http://www.mamp.info et il regroupe Apache, PHP et MySQL. vous l’installez comme une application et ça marche. Peut-être vaut-il la peine d’essayer, et c’est gratuit.

engrener

J’ai pensé répondre à ma propre question ici. Il semble que le problème ne soit pas dans mysql, mais dans les liaisons mysql ruby. J’ai compris cela parce que quand j’ai connecté Querius (mon mysql gui), il était capable de se connecter.

Voici comment construire à partir des sources les liaisons:

 cd /tmp wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz tar xvfz ruby-mysql-0.2.6.tar.gz cd ruby-mysql-0.2.6 ./configure make sudo make install 

Il y a beaucoup de bibliothèques que je devrai créer à partir de sources sur Snow Leopard et elles continueront à apparaître. MacPorts ne semble pas être suffisamment mis à jour pour toutes les bibliothèques, alors je vais le faire moi-même. Prochaine étape: freetype ( http://download.savannah.gnu.org/releases-noredirect/freetype/ )

J’ai procédé comme expliqué dans cet article ( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ ), et tout fonctionne maintenant correctement.

N’oubliez pas de rechercher les fautes de frappe dans sa commande pour installer le pilote mysql.

J’ai eu ce même problème et voici ce qui a fonctionné pour moi.

  1. Installez Snow Leopard et le MySQL DMG 64 bits.

  2. Créez /etc/my.cnf pour pointer vers mon précédent répertoire de données MySQL (comme décrit ici ) et exécutez

    sudo mysql_upgrade .

  3. Ouverture de l’IRB et réinstallation de toutes mes gemmes en utilisant (via blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).

    `gem list`.each_line {| line | système ‘sudo gem install # {line.split.first}’}

  4. Désinstallation des gems MySQL que j’avais installés.

  5. MySQL installé avec

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

Avec cela, tout semble fonctionner jusqu’à présent. * bash du bois *

Dans le cas où vous préférez le armsage maison, au lieu d’installer MySQL manuellement.

Désinstallez la gem mysql existante (le cas échéant):

  sudo gem uninstall mysql 

Localisez le fichier ‘mysql_config’:

  find /usr -name 'mysql_config' 

Réinstallez mysql gem:

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

Remarque: remplacez /usr/local/bin/ par le chemin d’access mysql_config correspondant trouvé à l’étape 2. Également sur mon blog .

Ian Selby merci beaucoup mais j’ai dû supprimer le sudo de sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

J’étais en train d’installer sur un gemset et j’utilise rvm qui je pense vous demande de ne pas utiliser le mot-clé sudo. Merci beaucoup.

Je l’ai résolu de cette façon:

  1. après l’installation du fichier dmg de mysql
  2. paquet config build.mysql –with-mysql-config = / usr / local / mysql / bin // mysql_config
  3. env ARCHFLAGS = “- arch x86_64”
  4. installation groupée

Après avoir quitté Rails pendant plusieurs années, je viens de passer un certain temps à mettre en place mon environnement de développement. J’ai donc pensé créer un didacticiel sur l’installation de la dernière version de Rails 3, MySQL et RVM sur SnowLeopard, afin d’économiser du temps, espérons-le, d’autres personnes qui sont dans ma position.

Il fonctionne depuis le 21 août 2011, en utilisant Rails 3.0.10, MySQL 5.5.15 et RVM 1.7.2. Il devrait fonctionner avec les futures versions de Rails 3.0.x, MySQL 5.5.x et RVM 1.7.x.

  1. Installez XCode s’il n’est pas déjà installé. J’ai utilisé 4.0.2. Malheureusement, cela a maintenant été retiré par Apple, mais peut être disponible ailleurs sur Internet. La version 3.2.x est téléchargeable gratuitement sur Apple, mais je ne l’ai pas testée avec ce tutoriel, cela fonctionne probablement aussi.

  2. Installez rvm :

     user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile user$ source .bash_profile 
  3. Installez une version de Ruby (par exemple 1.9.2) dans rvm, les instructions d’utilisation de base sont ici .

     user$ rvm install 1.9.2 user$ rvm use 1.9.2 
  4. Créez un gemset pour le rvm ruby ​​installé à l’étape 2 (x est le numéro de version).

     user$ rvm gemset create rails30x user$ rvm 1.9.2@rails30x 
  5. Installez Rails 3.0.x (x est le numéro de version).

     user$ gem install rails -v 3.0.x. 
  6. Téléchargez et installez le package MySQL 5.5.x, l’élément de démarrage et le volet des préférences . Tous les 3 d’entre eux sont inclus dans le fichier d’installation DMG. Installez également MySQL WorkBench.

    Trouvez / usr / local / mysql-nom-de-version / support-files (en insérant le nom du répertoire MySQL correct) et éditez mysql.server (avec les privilèges root). Autour de la ligne 46, localisez les lignes suivantes:

     basedir= datadir= 

    et changez-les pour lire (en insérant le nom correct du répertoire MySQL):

     basedir=/usr/local/mysql-version-name datadir=/usr/local/mysql-version-name/data 

    Enregistrez le fichier. MySQL peut maintenant être démarré à partir du panneau des préférences.

    Pour permettre aux rails 3 d’utiliser mysql, installez la gem mysql2 (voir l’étape suivante). Tout d’abord, vous devez définir DYLD_LIBRARY_PATH pour inclure le répertoire de la bibliothèque MySQL. Pour ce faire, éditez votre fichier ~ / .bash_profile dans votre dossier personnel et incluez les éléments suivants (en insérant le nom du répertoire MySQL correct):

     export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH 

    Sans l’inclusion du répertoire dans le DYLD_LIBRARY_PATH, un message sur l’absence de recherche de la bibliothèque apparaît et le serveur abandonne.

  7. Installez le gem mysql2 . (à partir de mai 2011, la version 0.2.7 est la version de travail la plus récente avec Rails 3.0.x).

     user$ gem install mysql2 -v 0.2.7 
  8. Créez une application rails et sa firebase database correspondante (appname_development).

     user$ rails new appname 
  9. Ajoutez ceci au Gemfile de l’application: gem 'mysql2', "0.2.7"

  10. Ajoutez ceci au database.yml de l’application:

     development: adapter: mysql2 encoding: utf8 reconnect: false database: appname_development pool: 5 username: username password: pwd host: localhost 
  11. lancez l’application et cochez “À propos de l’environnement de votre application”. Tout devrait fonctionner correctement.

Les instructions pour configurer ARCHFLAGS et passer – mysql-config = … ne semblaient pas être suffisantes pour résoudre ce problème sur Snow Leopard. En plus de cela, j’ai ajouté:

 DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH" 

à mon profil bash, et cela l’a résolu pour moi.

J’ai essayé le tour d’arcade plusieurs fois avec de légères variations mais cela n’a jamais fonctionné pour moi.

Ce qui a finalement fonctionné a été le retour à la version de ruby ​​et de gem installée avec le léopard des neiges.

J’avais construit et installé ma propre version qui a fonctionné pour moi à tous égards, sauf celui-ci. Puisque tout semble fonctionner correctement, je ne peux pas m’empêcher de deviner que le plugin mysql contient des hypothèses géniales. En tout cas, tout ce que j’ai fait, c’était de changer / usr / bin pour être le premier sur mon chemin. J’avais installé ruby ​​dans /usr/local/ruby-1.8.7 et /usr/local/ruby-1.9.1 pour pouvoir basculer facilement. Je pensais en parler, car la solution Archflags semble fonctionner pour beaucoup de gens, mais pas tout à fait.

J’ai renommé le programme mysql_config de $ MYSQL_HOME / bin pour que le script de configuration de l’installateur gem soit incapable de le trouver. Même si j’utilisais l’option libs, l’installateur de gem a toujours utilisé les parameters de compilation de mon installation mysql, qui est un fichier binary volumineux. Mais l’installation par défaut de Ruby est uniquement x86_64 et par conséquent, la compilation de la gem échoue. Après avoir renommé le programme mysql_config, la commande suivante fonctionnait parfaitement et installait le gem:

 sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql 

Si vous installez le gem mysql avec RVM, vous devez utiliser le code suivant pour l’installer

 sudo env ARCHFLAGS="-arch x86_64" gem install mysql 

Cette méthode a fonctionné pour moi dans Leopard Server, aucun des éléments ci-dessus ne fonctionnait

cet article a résolu le problème pour moi 🙂

http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • Avant Léopard

    sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • Léopard sur une machine PPC:

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

    • Leopard sur une machine Intel:

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

    • Snow Leopard (uniquement sur Intel):

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