Рельсы, MySQL и Снежный Барс
я перешел на 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 для работы с рельсами на snow leopard еще? Если да, то какова ваша настройка и еще лучше, что я могу сделать, чтобы воспроизвести ее?
18 ответов:
Я просто прошел через ту же боль... вот что сработало для меня:
- загрузите / установите 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 gems, которые плавали вокруг от моих 10.5 дней, что может сделать это, если выше не работает для вас :)
перестройка mysql как 64-битная или установка 64-битной версии важна, но вам также нужно убедиться, что вы строите собственные части MySQL gem как 64-битные (это не применяется, если вы находитесь на одном из оригинальных компьютеров Intel Core Duo Mac).
вот волшебная команда:
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
вы должны установить ARCHFLAGS, как показано выше, когда вы делаете установку gem с собственными компонентами на Snow Leopard.
Если вы используете bundler, вы можете использовать "Bundle config" для установки правильных аргументов сборки для mysql следующим образом:
bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
я боролся с этим в течение длительного времени и, наконец, получил это работает на снежного барса. Я закончил установку 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
надеюсь, что это поможет кто-то.
Я видел эту проблему много раз. почти каждый раз, когда я строю 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 dev, чтобы иметь возможность построить этот драгоценный камень.
У меня были проблемы с получением моей конфигурации для работы после установки snow leopard. Я нашел МАМП в http://www.mamp.info и он связывает Apache, PHP и MySQL. вы устанавливаете его как приложение, и он просто работает. Может быть, стоит попробовать, и это бесплатно.
сетки
Я думал, что отвечу на свой собственный вопрос здесь. Кажется, что проблема не в mysql, а в привязках MySQL ruby. Я понял это, потому что, когда я подключил Querius (мой графический интерфейс mysql), он смог подключиться.
вот как построить из исходного исправить привязки:
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/)
Я продолжал, как описано в этом посте (http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/), и теперь все работает нормально.
Не забудьте искать опечатки в своей команде, чтобы установить драйвер mysql.
у меня была такая же проблема, и вот что сработало для меня.
установите 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).
`драгоценный камень список.`each_line {/line / system ' sudo gem install #{line.расщеплять.первый}'}удалил MySQL gems, которые я установил.
- установлен MySQL gem с
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
С этим, кажется, все работает до сих пор. * стучать по дереву*
в случае, если вы предпочитаете домаквас, вместо установки MySQL вручную.
отменить установку существующего MySQL gem (если есть):
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. Также на моем блог.
Ян Селби большое спасибо, но мне пришлось удалить
sudo
передsudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
я устанавливал на gemset и использую rvm, который, я думаю, просит вас не использовать ключевое слово sudo. Большое спасибо.
Я решил это так:
- после установки dmg файла mysql
- пакета конфигурации построения.mysql --with-mysql-config=/usr/local/mysql/bin/ / mysql_config
- env ARCHFLAGS=" - arch x86_64"
- bundle install
имея перерыв от Rails в течение нескольких лет, я просто потратил некоторое время на настройку своей среды разработки. Поэтому я решил создать учебник о том, как установить последнюю версию Rails 3, MySQL и RVM на SnowLeopard, чтобы, надеюсь, сэкономить время другим, кто находится в моем положении.
он работает с 21 августа 2011 года, используя Rails 3.0.10, MySQL 5.5.15 и RVM 1.7.2. Он должен работать с будущими рельсами 3.0.x, MySQL 5.5.x, и РВМ 1.7.икс версии.
установите XCode, если он еще не установлен. Я 4.0.2. К сожалению, теперь это было снято Apple, но может быть доступно в другом месте в Интернете. Версия 3.2.x можно скачать бесплатно с Apple, но я не тестировал его с помощью этого урока, он, вероятно, тоже работает.
установить РВМ:
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 ruby, установленного в шаге 2 (x-номер версии).
user$ rvm gemset create rails30x user$ rvm 1.9.2@rails30x
Установить Rails 3.0.x (x-номер версии).
user$ gem install rails -v 3.0.x.
Загрузите и установите MySQL 5.5.X пакет, элемент запуска и панель настроек. Все 3 из них включены в установочный файл DMG. Также установить MySQL WorkBench.
найти /usr/local/mysql-version-name / support-files (вставка правильного имени каталога MySQL) и редактировать mysql.сервер (с правами суперпользователя). Вокруг строки 46 найдите строки, которые гласят:
basedir= datadir=
и измените их на чтение (вставив правильное имя каталога MySQL):
basedir=/usr/local/mysql-version-name datadir=/usr/local/mysql-version-name/data
сохраните файл. MySQL теперь может быть запущен с панели настроек.
включить рельсы 3, чтобы использовать MySQL, установить 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
камень. (по состоянию на май 2011 года, версия 0.2.7 является самой последней рабочей версией с Rails 3.0.икс.)user$ gem install mysql2 -v 0.2.7
создайте приложение rails, и это соответствующая база данных (appname_development).
user$ rails new appname
добавьте это в Gemfile приложения:
gem 'mysql2', "0.2.7"
добавить в базу данных приложения.yml:
development: adapter: mysql2 encoding: utf8 reconnect: false database: appname_development pool: 5 username: username password: pwd host: localhost
запустите приложение и проверьте "о среде вашего приложения". Все должно работать правильно.
инструкции по настройке ARCHFLAGS и передаче -- mysql-config=... кажется, этого было недостаточно, чтобы решить эту проблему для меня на Snow Leopard. В дополнение к этому, я добавил:
DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
к моему профилю bash, и это решило его для меня.
Я пробовал трюк archflags много раз с небольшими вариациями, но он никогда не работал для меня.
что в итоге сделал работа переключалась обратно на версию ruby и gem, установленную с snow leopard.
Я построил и установил свою собственную версию, которая работала для меня во всех отношениях, кроме этого. Поскольку все остальное, кажется, работает нормально, я не могу не догадаться, что плагин mysql имеет некоторые фанковые предположения в нем. В любом случае, все, что я сделал переключатель / usr / bin снова будет первым на моем пути. Я установил ruby в /usr/local /ruby-1.8.7 и/usr/local / ruby-1.9.1, чтобы иметь возможность легко переключаться. Думал, что я упомяну об этом, так как решение archflags, похоже, работает для многих людей, но не совсем всех.
я переименовал программу mysql_config из $MYSQL_HOME / bin во что-то другое, так что сценарий конфигурации из установщика gem не может его найти. Несмотря на то, что я использовал опцию libs, установщик gem всегда использовал настройки компиляции из моей установки mysql, которая является fat binary. Но установка ruby по умолчанию-это только x86_64, и поэтому компиляция gem не выполняется. После переименования программы mysql_config следующая команда работала просто отлично и установила джем:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
Если вы устанавливаете MySQL gem с RVM, вам нужно использовать следующий код для его установки
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
этот метод работал для меня в Leopard Server, ни один из вышеперечисленных не работал
эта статья решила проблему для меня:)
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
Леопард на машине Intel:
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Снежный Барс (только на Intel):
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config