Rails, MySQL и Snow Leopard - PullRequest
       59

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 ]

108 голосов
/ 29 августа 2009

Я только что прошел через ту же боль ... вот что сработало для меня:

  1. Скачать / установить 64-битную версию MySQL 5.1.37 с mysql.com
  2. выполните следующие команды:

    sudo gem update --system

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

Я также удалил все драгоценные камни mysql, которые летали с моих 10,5 дней, что может сделать это, если вышеописанное не работает для вас:)

10 голосов
/ 28 августа 2009

Восстановление mysql как 64-битной или установка 64-битной версии очень важно, но вы также должны убедиться, что вы собрали собственные части mysql gem как 64-битные (это не относится, если вы используете один из оригинальных Intel Core Duo macs).

Вот волшебная команда:

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

Вы должны устанавливать ARCHFLAGS, как показано выше, всякий раз, когда вы выполняете установку гемов с нативными компонентами на Snow Leopard.

7 голосов
/ 23 августа 2010

Если вы используете bundler, вы можете использовать "bundle config", чтобы установить правильные аргументы сборки для mysql следующим образом:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
6 голосов
/ 07 августа 2009

Я долго боролся с этим и наконец заработал на Snow Leopard. Я закончил установку Ruby, RubyGems и MySQL из исходного кода (см. Учебник Hivelogic по установке Ruby и RubyGems. Учебник MySQL приведен в нижней части). Я наконец получил драгоценный камень для установки, но я все еще получал

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

Я наконец удалил mysql.bundle (я понятия не имею, для чего это), и все заработало.

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

Надеюсь, это кому-нибудь поможет.

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

Я видел эту проблему много раз. почти каждый раз, когда я собираю mysql на машине. Я думаю, вы должны передать свой mysqlconfig как часть команды 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

Помните, что вам нужны файлы разработчика mysql для создания этого драгоценного камня.

2 голосов
/ 14 сентября 2009

У меня были проблемы с настройкой конфигурации после установки снежного барса. Я нашел MAMP на http://www.mamp.info, и он объединяет Apache, PHP и MySQL. Вы устанавливаете его как приложение, и оно просто работает. Может быть, стоит попробовать, и это бесплатно.

сетка

1 голос
/ 29 августа 2009

У меня была такая же проблема, и вот что сработало для меня.

  1. Установите Snow Leopard и 64-битную MySQL DMG.

  2. Создайте /etc/my.cnf, чтобы указать на мой предыдущий каталог данных MySQL (как описано здесь ), и выполните

    sudo mysql_upgrade.

  3. Открыл IRB и переустановил все мои драгоценные камни, используя (через blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).

    `список драгоценных камней`.each_line {| line | system 'sudo gem install # {line.split.first}'}

  4. Деинсталлировал гемы MySQL, которые я установил.

  5. Установлен гем MySQL с

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

С этим, кажется, все работает до сих пор. * стук дерева *

1 голос
/ 15 июля 2009

Я поступил так, как объяснено в этом посте (http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/),, и теперь все работает нормально.

Не забудьте высматривать опечатки в его команде для установки драйвера mysql.

1 голос
/ 14 июня 2009

Я думал, что отвечу на свой вопрос здесь. Кажется, что проблема не в mysql, а в привязках mysql ruby. Я понял это, потому что когда я подключил Querius (мой mysql gui), он смог подключиться.

Вот как построить из исходного кода исправить привязки:

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

Есть множество библиотек, которые мне нужно будет собрать из исходного кода на Snow Leopard, и они продолжают появляться. MacPorts, похоже, недостаточно обновлен для всех библиотек, поэтому я собираюсь сделать это самостоятельно. Далее: freetype (http://download.savannah.gnu.org/releases-noredirect/freetype/)

1 голос
/ 21 августа 2011

После нескольких лет перерыва в Rails я просто потратил некоторое время на настройку среды разработки. Поэтому я подумал, что создам учебное пособие по установке последней версии Rails 3, MySQL и RVM на SnowLeopard, чтобы, надеюсь, сэкономить время другим, кто находится на моем месте.

Работает с 21 августа 2011 года, используя Rails 3.0.10, MySQL 5.5.15 и RVM 1.7.2. Он должен работать с будущими версиями Rails 3.0.x, MySQL 5.5.x и RVM 1.7.x.

  1. Установите XCode, если он еще не установлен. Я использовал 4.0.2. К сожалению, это уже было отозвано Apple, но может быть доступно в другом месте в Интернете. Версию 3.2.x можно бесплатно загрузить с Apple, но я не тестировал ее с этим руководством, вероятно, она тоже работает.

  2. Установка 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. Установите версию Ruby (например, 1.9.2) в rvm, основные инструкции по использованию здесь .

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  4. Создайте gemset для rvm ruby, установленного на шаге 2 (x - номер версии).

    user$ rvm gemset create rails30x
    user$ rvm 1.9.2@rails30x
    
  5. Установите Rails 3.0.x (x - номер версии).

    user$  gem install rails -v 3.0.x.
    
  6. Загрузите и установите пакет MySQL 5.5.x, элемент автозагрузки и панель настроек . Все 3 из них включены в установочный файл DMG. Также установите MySQL WorkBench.

    Найдите / usr / local / mysql-version-name / support-files (вставив правильное имя каталога MySQL) и отредактируйте mysql.server (с правами суперпользователя). Вокруг строки 46 найдите строки, которые читаются следующим образом:

    basedir=
    datadir=
    

    и измените их на чтение (вставив правильное имя каталога MySQL):

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

    Сохраните файл. MySQL теперь можно запустить из панели настроек.

    Чтобы позволить rails 3 использовать mysql, установите gem mysql2 (см. Следующий шаг). Во-первых, вам нужно установить DYLD_LIBRARY_PATH включить каталог библиотеки MySQL. Для этого отредактируйте ваш ~ / .bash_profile в своем домашнюю папку и включите следующее (вставив правильное имя каталога MySQL):

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

    Без включения каталога в DYLD_LIBRARY_PATH, сообщение о том, что библиотека не найдена появится и сервер прервет работу.

  7. Установите гем mysql2. (по состоянию на май 2011 г. версия 0.2.7 является самой последней рабочей версией с Rails 3.0.x).

    user$ gem install mysql2 -v 0.2.7 
    
  8. Создайте приложение rails и соответствующую ему базу данных (appname_development).

    user$ rails new appname
    
  9. Добавьте это в Gemfile приложения: gem 'mysql2', "0.2.7"

  10. Добавьте это в базу данных приложения .yml:

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      host: localhost
    
  11. запустите приложение и отметьте «О среде вашего приложения». Все должно работать правильно.

...