Установка Rails, MySQL и т.д. Все идет не так

Я боролся с этим в течение нескольких часов. Все просто перестало работать, и я больше не могу работать. Я ноб у Ruby, Ruby on Rails и Terminal в целом. Это действительно расстраивает меня, поэтому я просто пытаюсь описать свою проблему как можно подробнее, надеясь, что кто-то сможет дать мне решение.

Я нахожусь в Mac OS X Snow Leopard. Я не мог заставить Rails работать вообще сейчас: Не удалось найти головные боли жемчужины

Но после некоторых попыток переустановки, он внезапно снова работал. Но теперь я просто не могу заставить MySQL работать, и иногда он даже снова разрушает установку Rails.

Это то, что я делаю:

sudo gem uninstall rails
sudo gem uninstall mysql
sudo gem uninstall mysql2

После этих команд я проверю установленные драгоценные камни на gem list. В настоящее время ничего не отображается в MySQL, но я все еще вижу rails (2.3.5, 2.2.2, 1.2.6) . Это нормально? Означает ли это, что у меня есть 3 установки Rails? Это не имеет смысла для меня. В любом случае, я делаю это:

sudo gem clean

Что не удается полностью. Я получаю кучу таких ошибок:

Попытка удалить fcgi-0.8.7
Не удалось удалить fcgi-0.8.7:
    Gem:: InstallError: не удается удалить, проверьте gem list -d fcgi

Он ничего не удаляет. На этом этапе я пытаюсь установить все снова. Я начинаю с:

sudo gem install rails

Что происходит (я думаю):

Успешно установленные рельсы-3.0.3
Успешно установлен строитель-2.1.2
Установлено 2 камня Установка ri-документации для rails-3.0.3...
Файл не найден: lib

Затем я обновляю RubyGems:

sudo gem update --system
sudo gem install rubygems-update
sudo update_rubygems

Тогда он говорит, что я установил 1.3.7, поэтому мне это удалось. Итак, теперь я приступаю к установке MySQL. У меня уже установлен MySQL 5.5.8 на моей машине. Я провел некоторое исследование об установке MySQL на Snow Leopard, и мне кажется, что я должен использовать эту команду:

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

Я получаю кучу таких ошибок:

Нет определения для time_set_neg
Нет определения для time_set_second_part
Нет определения для time_equal
Нет определения для error_errno

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

rails new user_group -d mysql

Это работает! Rails установлен правильно. Теперь я пытаюсь создать модель.

cd user_group
rails generate model User

Ошибка этой ошибки:

Не удалось найти gem 'mysql2 ( >= 0, runtime)' в любом из источников драгоценных камней, перечисленных в вашем Gemfile.
Попробуйте запустить bundle install.

Итак, я пытаюсь запустить bundle install. Он устанавливает много драгоценных камней. Затем я снова пытаюсь создать свою модель. Я получаю эту ошибку:

Библиотека/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen (/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): библиотека не загружена: libmysqlclient.16.dylib(LoadError)
  Ссылки:/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Причина: изображение не найдено -/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

Это насколько я могу получить. Что мне делать? И почему это должно быть так сложно...

Ответ 1

Snow Leopard поставляет Ruby 1.8.7. Ruby 1.8.7 автоматически не добавляет команду require 'rubygems' к Ruby script, например 1.9.2, поэтому в общем случае вам нужно добавить это к вашему script. Это устраняет проблемы с Ruby, не обнаруживая драгоценные камни, вызываемые вашим кодом во многих случаях. Rails - другое животное, но версия с 1.8.7 хорошо документирована, поэтому вы должны быстро найти исправление.

Рубин, поставляемый Snow Leopard, действительно предназначен для собственного использования. Пользователи могут контактировать с этим, но он установлен Apple, потому что у них есть приложения, которые его используют. Используйте locate podcast | grep rb$ для просмотра. Точно так же Perl и Python в Snow Leopard используются для поддержки кода, установленного Apple, так что возиться с ними - не очень хорошая идея. Изменение встроенного Ruby, Perl или Python обычно не приведет к взрыву системы в пламени, но это может вызвать раздражающие и необъяснимые проблемы дальше по дороге, когда процедуры обслуживания системы перестают работать.

Используя sudo для удаления gems, установленных Apple, и добавьте новые, вы оставили свою систему Ruby в неожиданном состоянии в отношении приложений Apple. Вместо того, чтобы возиться с Apple Ruby, вы должны установить отдельный Ruby для собственного использования с использованием Fink или MacPorts или из исходного кода или с помощью RVM.

Лично я использую RVM, потому что он создает изолированную среду ~/.rvm в вашем домашнем каталоге и упрощает управление несколькими версиями Руби и драгоценных камней. RVM требует, чтобы вы установили библиотеку разработки XCode, которую вы можете скачать из http://developer.apple.com/technologies/ после бесплатной регистрации. XCode также находится на вашем системном DVD, но эта версия считается ошибочной, поэтому используйте загруженную версию.

Ответ 2

Обязательно добавьте жемчужину MySql в этот проект gemfile со следующим кодом:

  gem 'mysql', '2.8.1' 

Запустите установку/обновление пакета и попробуйте. Вы сказали, что используете MySQL, и камень может даже быть установлен, но вы его не загружаете.

Кроме того, вы терпите неудачу в нескольких пунктах: обратите внимание на

File not found: lib

И снова я мог быть совершенно не прав в этом - это моя попытка дать ключ к поиску и устранению неполадок.