Rails, MySQL и Snow Leopard - PullRequest
       73

Rails, MySQL и Snow Leopard

68 голосов
/ 14 июня 2009

Я обновился до Snow Leopard, используя диск, который мы получили на WWDC.

Попытка запустить некоторые из моих приложений 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)

Я мог бы поклясться, что исправил это однажды. Проблема в том, что

sudo gem install mysql

не работает и выдает ошибку:

 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

Кто-нибудь уже получил mysql для работы с рельсами на снежном барсе? Если да, каковы ваши настройки и, что еще лучше, что я могу сделать, чтобы воспроизвести их?

Ответы [ 18 ]

1 голос
/ 04 февраля 2011

Йен Селби, большое спасибо, но мне пришлось убрать sudo перед sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Я устанавливал на gemset и использую rvm, который, я думаю, просит вас не использовать ключевое слово sudo. Большое спасибо.

1 голос
/ 04 апреля 2011

Я решил это так:

  1. после установки dmg-файла mysql
  2. комплект конфигурации
  3. env ARCHFLAGS = "- arch x86_64"
  4. комплектация
1 голос
/ 17 января 2011

Если вы предпочитаете home brew вместо ручной установки MySQL.

Удалите существующий самоцвет mysql (если есть):

 sudo gem uninstall mysql 

Найдите файл «mysql_config»:

 find /usr -name 'mysql_config' 

Переустановите mysql gem:

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

Примечание: замените /usr/local/bin/ на соответствующий путь mysql_config, найденный на шаге 2. Также в моем блоге .

1 голос
/ 27 декабря 2010

Инструкций по настройке ARCHFLAGS и передаче --mysql-config = ... оказалось недостаточно для решения этой проблемы на Snow Leopard. В дополнение к этому я добавил:

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

к моему профилю bash, и это решило это для меня.

0 голосов
/ 04 марта 2010

Я переименовал программу mysql_config из $ MYSQL_HOME / bin в другое, чтобы скрипт конфигурации из установщика gem не смог ее найти. Несмотря на то, что я использовал опцию libs, установщик gem всегда использовал параметры компиляции из моей установки mysql, которая является толстым двоичным файлом. Но установка ruby ​​по умолчанию - только x86_64, и поэтому компиляция гема не удалась. После переименования программы mysql_config следующая команда работала нормально и установила гем:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
0 голосов
/ 02 ноября 2009

Я много раз пробовал уловку с флагами, но у меня это никогда не получалось.

Что в итоге сделало работа, так это переключение обратно на версию ruby ​​и gem, установленную со снежным барсом.

Я собрал и установил свою собственную версию, которая работала для меня во всех отношениях, кроме этой. Так как все остальное работает нормально, я не могу не догадываться, что в плагине mysql есть некоторые причудливые предположения. В любом случае, все, что я сделал, это переключил / usr / bin, чтобы снова оказаться первым на моем пути. Я установил ruby ​​в /usr/local/ruby-1.8.7 и /usr/local/ruby-1.9.1, чтобы можно было легко переключаться. Думаю, я бы упомянул об этом, поскольку решение archflags, похоже, работает для многих людей, но не для всех.

0 голосов
/ 20 мая 2010

Если вы устанавливаете mysql gem с RVM, вам нужно использовать следующий код для его установки

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

Этот метод работал для меня на Leopard Server, ничего из вышеперечисленного не работало

0 голосов
/ 05 марта 2010

эта статья решила проблему для меня:)

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

  • До Леопарда

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

    • Леопард на КПП:

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

    • Leopard на машине Intel:

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

    • Snow Leopard (только на Intel):

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

...