Rails, MySQL и Snow Leopard
Я обновился до Snow Leopard, используя диск, который мы получили в WWDC.
Попытка запустить некоторые из моих рельсовых приложений теперь жалуется на 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 для работы с рельсами на снежном барсе? Если да, то какова ваша установка и еще лучше, что я могу сделать, чтобы воспроизвести ее?
Ответы
Ответ 1
Я просто пережил ту же боль... вот что сработало для меня:
- Загрузите/установите 64-битный MySQL 5.1.37 с mysql.com
- выполните следующие команды:
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 дней, что может сделать это, если выше не работает для вас:)
Ответ 2
Важное значение имеет перестроение mysql как 64-битного или установка 64-битной версии, но вам также необходимо убедиться, что вы создаете собственные части драгоценного камня mysql как 64-битные (это не относится, если вы находитесь на одном из оригинальных процессоров Intel Core Duo macs).
Здесь волшебная команда:
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Вы должны установить ARCHFLAGS, как показано выше, всякий раз, когда вы выполняете установку gem с помощью собственных компонентов на Snow Leopard.
Ответ 3
Если вы используете bundler, вы можете использовать "config bundle" для установки правильных аргументов сборки для mysql следующим образом:
bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
Ответ 4
Я долгое время сражался с этим и, наконец, работал над Snow Leopard. Я закончил установку Ruby, RubyGems и MySQL из источника (см. Hivelogic tutorial для установки 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
Надеюсь, что это поможет кому-то.
Ответ 5
Я видел эту проблему много раз. почти каждый раз я строю mysql на машине. Я думаю, вам нужно передать свой mysqlconfig как часть команды установки gem.
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 dev для создания этого драгоценного камня.
Ответ 6
У меня возникли проблемы с настройкой моей конфигурации после установки снежного барса. Я нашел MAMP в http://www.mamp.info, и он связывает Apache, PHP и MySQL. вы устанавливаете его как приложение, и оно просто работает. Возможно, стоит попробовать, и это бесплатно.
сетка
Ответ 7
Я думал, что отвечу на свой вопрос. Кажется, что проблема не в mysql, а в bindings ruby mysql. Я понял это, потому что, когда я подключил 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/)
Ответ 8
Я продолжил, как описано в этом сообщении (http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/), и теперь все работает нормально.
Не забудьте следить за опечатками в его команде, чтобы установить драйвер mysql.
Ответ 9
У меня была эта же проблема, и вот что сработало для меня.
-
Установите Snow Leopard и 64-битный MySQL DMG.
-
Создайте/etc/my.cnf, чтобы указать на мой предыдущий каталог данных MySQL (как описано здесь) и запустить
sudo mysql_upgrade
.
-
Откройте IRB и переустановите все мои драгоценные камни, используя (через blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).
`gem list`.each_line {| line | system 'sudo gem install # {line.split.first}'}
-
Утилита MySQL, которую я установил.
- Установленный MySQL с помощью
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
С этим все, кажется, работает до сих пор. * выбить дерево *
Ответ 10
Инструкции по настройке ARCHFLAGS и передаче --mysql-config =..., похоже, не были достаточными, чтобы решить это для меня на Snow Leopard. В дополнение к этому я добавил:
DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
в мой профиль bash, и это решило его для меня.
Ответ 11
Если вы предпочитаете домашний 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. Также на моем blog.
Ответ 12
Ян Селби, спасибо вам большое, но мне пришлось удалить sudo
перед sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Я устанавливал в gemset и использую rvm, который, как я думаю, просит вас не использовать ключевое слово sudo. Большое спасибо.
Ответ 13
Я решил это так:
- после установки dmg файла mysql
- bundle config build.mysql --with-mysql-config =/usr/local/mysql/bin//mysql_config
- env ARCHFLAGS = "- arch x86_64"
- установить пакет
Ответ 14
После нескольких перерывов с 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.
-
Установите XCode, если он еще не установлен. Я использовал 4.0.2. К сожалению, это теперь было снято Apple, но может быть доступно в других местах в Интернете. Версия 3.2.x можно скачать бесплатно с Apple, но я не тестировал ее с помощью этого руководства, возможно, это тоже работает.
-
Установите 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
-
Установите версию Ruby (например, 1.9.2) в rvm, основные инструкции по использованию здесь.
user$ rvm install 1.9.2
user$ rvm use 1.9.2
-
Создайте gemset для рубина rvm, установленного на шаге 2 (x - номер версии).
user$ rvm gemset create rails30x
user$ rvm [email protected]
-
Установить Rails 3.0.x(x - номер версии).
user$ gem install rails -v 3.0.x.
-
Загрузите и установите пакет MySQL 5.5.x, элемент запуска и панель настроек. Все три из них включены в установочный файл DMG. Также установите MySQL WorkBench.
Найдите/usr/local/mysql-version-name/support-files (вставьте правильное имя каталога MySQL) и отредактируйте mysql.server(с привилегиями root). Вокруг строки 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 сообщение об отсутствии библиотеки
и сервер будет прерван.
-
Установите mysql2
gem. (по состоянию на май 2011 года версия 0.2.7 - это самая последняя рабочая версия с Rails 3.0.x).
user$ gem install mysql2 -v 0.2.7
-
Создайте приложение rails и соответствующую ему базу данных (appname_development).
user$ rails new appname
-
Добавьте это в приложение Gemfile: gem 'mysql2', "0.2.7"
-
Добавьте это в приложение database.yml:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: appname_development
pool: 5
username: username
password: pwd
host: localhost
-
запустите приложение и отметьте "О вашей прикладной среде". Все должно работать правильно.
Ответ 15
Я пробовал трюк archflags много раз с небольшими вариациями, но он никогда не работал у меня.
В итоге, наконец, работа переключилась на версию рубинового и драгоценного камней, установленную с помощью снежного барса.
Я создал и установил свою собственную версию, которая работала для меня во всех отношениях, кроме этого.
Поскольку все остальное работает нормально, я не могу угадать, что в плагине mysql есть некоторые фанки-предположения. Во всяком случае, все, что я сделал, это switch/usr/bin, чтобы быть первым на моем пути снова. Я смог установить рубин в /usr/local/ruby -1.8.7 и/usr/local/ruby-1.9.1, чтобы иметь возможность легко переключаться. Думаю, я бы упомянул об этом, так как решение archflags, похоже, работает для многих людей, но не совсем для всех.
Ответ 16
Я переименовал программу mysql_config из $MYSQL_HOME/bin в другое, чтобы не удалось найти конфигурацию script у установщика gem. Несмотря на то, что я использовал параметр libs, установщик gem всегда использовал параметры компиляции из моей установки mysql, которая является жирной бинарной. Но установка ruby по умолчанию - только x86_64, и, следовательно, компиляция жемчужины терпит неудачу. После переименования программы mysql_config следующая команда отлично справилась и установила драгоценный камень:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
Ответ 17
эта статья решила проблему для меня:)
http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html
Ответ 18
Если вы устанавливаете драгоценный камень mysql с RVM, вам нужно использовать следующий код для его установки
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
Этот метод работал у меня в Leopard Server, ни один из вышеперечисленных