Рельсы, 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 67

18 ответов:

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

  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 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.

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

  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.расщеплять.первый}'}

  4. удалил MySQL gems, которые я установил.

  5. установлен 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. Большое спасибо.

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

  1. после установки dmg файла mysql
  2. пакета конфигурации построения.mysql --with-mysql-config=/usr/local/mysql/bin/ / mysql_config
  3. env ARCHFLAGS=" - arch x86_64"
  4. 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.икс версии.

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

  2. установить РВМ:

    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.сервер (с правами суперпользователя). Вокруг строки 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, сообщение о том, что библиотека не найдена появится и сервер прервется.

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

    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. запустите приложение и проверьте "о среде вашего приложения". Все должно работать правильно.

инструкции по настройке 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