Установка MySQL в Rails 3 на Ubuntu 11.04

В комментариях к одной из предыдущих статей я взял на себя смелость пообещать, что расскажу, как запустить Rails 3 с возможностью использовать MySQL. Ну что ж, назвался груздем — полезай в лукошко! (-:

Приступим. Для начала перейдём в директорию, где у нас хранятся проекты, с которыми будем работать:

1. $ cd ~/rails/

Создадим каркас нового приложения, но уже с поддержкой MySQL, а не sqllite, которая по умолчанию.

2. $ rails new mysql_app -d mysql

Если посмотреть Gemfile в директории созданного приложения, то будет видно изменение: gem ‘mysql2′ вместо gem ‘sqlite3′. Ключ «-d» указывает, какую БД использовать.

Теперь необходимо установить недостающие gem-ы:

3. $ bundle install

Но опять с ходу ничего не получилось лично у меня. Если Вы раньше производили какие-то дополнительные настройки системы, то у Вас может и не будет данной ошибки. Но в моём случае, как логично предположить, ругается на отсутствие в системе MySQL в принципе:

Installing mysql2 (0.3.2) with native extensions /home/boo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions’: ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

Поэтому необходимо её установить.

Ставим MySQL. В терминале:

4. $ sudo apt-get  install libmysql-ruby libmysqlclient-dev mysql-client mysql-server

Во время установки система запросит ввод пароль root-а для администратора БД. Не забудьте его, он ещё пригодится. Обращаю Ваше внимание, что не стоит его делать цифровым! Я, по наивности своей, думаю, что раз система не боевая, всё только для тестирования, то и пароль «1234567890″ вполне себе сойдёт. Но не тут-то было! Уже потом, после всех установок выскакивает ошибка: TypeError can’t convert Fixnum into String. Так что не повторяйте мои ошибки (-:

Теперь можно повторить команду:

5. $ bundle install

Теперь всё должно пройти удачно: gem установится.

Теперь необходимо создать какую-то БД, с которой будет работать наше приложение. Выполним следующее:

6. $ mysqladmin -u root -p create newmysql

Просто вводим пароль и база будет создана. Теперь нам надо сообщить нашему приложению, какие настройки использовать для доступа к БД. Для это есть специальный файл конфигурации: config/database.yml. Открываете его в любом удобном редакторе и изменяете на введёные Ваши данные. Должно получиться что-то типа этого:

development:

adapter: mysql2
encoding: utf8
reconnect: false
database: newmysql
pool: 5
username: root
password: megapassword
host: localhost

Соответственно Вы подставляете свои данные. Пытаемся запустить сервер, естественно, из директории приложения:

7. rails s

Только вот если Вы делали всё то же самое, что и я, то в консоли Вы увидите что-то типа этого:

WARNING: This version of mysql2 (0.3.2) doesn’t ship with the ActiveRecord adapter bundled anymore as it’s now part of Rails 3.1

WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x

Сервер запустится, даже можно будет посмотреть картинку по адресу localhost:3000. Только вот незадача: если кликнуть ссылку в браузере About your application’s environment, то опять же будет видно, что не всё в порядке…

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load — active_record/connection_adapters/mysql2_adapter)

ActiveRecord::ConnectionNotEstablished

В общем, приложение с БД не работает. Но не отчаивайтесь! Это исправимо. Если опять прочитать сообщение в логах от сервера, но уже внимательно, то станет ясно, что устанавливаемый по умолчанию gem mysql2 уже версии 0.3.2 является уже частью Rails 3.1, будущего релиза. Чтобы мы могли использовать этот gem в нашей версии «рельс», то надо установить gem версии 0.2.х. Ну что же, давайте сделаем это. Некоторые непродолжительные поиски в сети дали совет, что версия 0.2.7 вполне будет работоспособна. Для этого вносим изменения в Gemfile:

8. gem ‘mysql2′, «0.2.7″

После этого опять производим установку нужного gem-a:

9. $ bundle install

Лично у меня всё прошло успешно. Запускаем сервер:

10. $ rails s

В логах — никаких не нужных предупреждений, ничего подобного. По адресу localhost:3000 всё тоже красиво, а особенно надпись:

Database adapter:   mysql2

Вот теперь наше приложение вполне работоспособно и с MySQL.

Удачи всем! (-:

Недавние записи

12 комментариев to “Установка MySQL в Rails 3 на Ubuntu 11.04”

  1. Twin Says:

    Большое вам спасибо:)Это наверное первый пост о том как установить MYSQL адаптер в Rails :) Благодарю!

  2. Twin Says:

    По крайней мере я больше не находил:)

  3. none Says:

    Искренне надеюсь, что в чём-то помог (-:

  4. source-n Says:

    Огромное спасибо !!!
    Продолжайте даже с этим учебником не все в установке получалось пришлось комбинировать http://russian.railstutorial.org/chapters/beginning#sec:install_git
    Надеюсь это будет кому-то полезно.
    Удачи!!!

  5. jnk- Says:

    только налакомлюсь с рельсами и вот какая проблема возникла, при запуске сервера выдает ощипку..
    DEPRECATION WARNING: config.action_view.debug_rjs will be removed in 3.1, from 3.1 onwards you will need to install prototype-rails to continue to use RJS templates . (called from service at /home/username/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpserver.rb:111)

    помогите разобраться.
    спасибо.

  6. none Says:

    Попробуйте в файле config/environments/development.rb удалить строку:
    config.action_view.debug_rjs = true

  7. AWer Says:

    Спасибо за разъяснение с версиями адаптера.

  8. Mysql, Ruby On Rails 3 | ChandleR's blog Says:

    [...] Ресурс, який допоміг мені, в цьому питанні: Posted in Ruby On Rails Tags: Mysql, Mysql и Ruby On Rails 3, Ruby On Rails 3 « Підключаємо Xbox360 до монітора та аудіосистеми [...]

  9. azart Says:

    делал все как сказано) ввел пароль 123456 в настройки mysql и выдал ошибку:
    TypeError can’t convert Fixnum into String.
    сменил пароль на 1234, но ошибка не исчезла( в чем может быть проблема?
    p.s.
    rails 3.1.1rc3
    ruby 1.9.2-p180

  10. azart Says:

    проблему решил, чтобы такая ошибка не вылетатала (может это особенность такая 3.1.1rc3), в database.yml пароль надо писать в «»

  11. slaw-ik Says:

    Спасибо, помогло!

  12. victor Says:

    Последнее время я использую Valentina Studio для работы с MySQL на ubuntu. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview

Оставить комментарий