Установка Ruby on Rails в Ubuntu (для разработки)

Я постараюсь поддерживать эту статью в актуальном состоянии. На данный момент, все действия, описанные в статье, актуальны для следующих версий ПО:

  • Ubuntu Karmic Koala (9.10)
  • Ruby 1.8.7 (2009-06-12 patchlevel 174)
  • Rubygems 1.3.5
  • Ruby on Rails 2.3.4

Установка Ruby

В репозиториях Убунту лежит актуальная версия интерпретатора Ruby, поэтому для установки Ruby хватит одной стандартной команды:

sudo apt-get install ruby-full build-essential libruby-extras libsqlite3-ruby

Установка Rubygems

  1. RubyGems в репозитории Ubuntu Karmic пока актуальные, поэтому можно смело ставить из репозитория командой:
    sudo apt-get install rubygems
  2. Однако, если вы предпочитаете ручную установку RubyGems, воспользуйтесь следующими командами:
    wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
    tar xzvf rubygems-1.3.5.tgz
    cd rubygems-1.3.5
    sudo ruby setup.rb
    sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

    Для того, чтобы у вас заработало дополнение команд в консоли, необходимо открыть файл настроек дополнения

    sudo gedit /etc/bash_completion.d/gem1.8

    И вставить в начало этого файла, сразу после комментариев, следующий код:

    have()
    {
      unset -v have
      PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null &&
      have="yes"
    }

    А в самый конец вставить:

    [ -n "${have:-}" ] && complete -F _gem18 $filenames gem

    Теперь вы в консоли сможете набирать gem i и консоль будет сама дополнять команду до gem install,

    Если же у вас уже была установлена более старая версия Rubygems, вы можете обновить её до текущей:

    sudo gem update --system

    Иногда, после обновления этой командой, gem может начать выдавать ошибку:

    /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

    Для её устранения, необходимо отредактировать исполняемый файл (sudo gedit /usr/bin/gem) и перед строкой require "rubygems" вставить строку require "rubygems/gem_runner"

Установка Rails

Теперь, когда нас установлены актуальные версии интерпретатора и менеджера гемов, мы можем присутпить к установке самих Rails.

sudo gem install rails

Всё, рельсы установлены. Чтобы проверить, что всё в порядке, создадим приложение на рельсах:

cd ~
mkdir Sites
cd Sites
rails my_first_site
cd my_first_site
./script/server

Эти команды создадут в вашей домашней директории поддиректории Sites, а в ней, в директории my_first_site rails-приложение, после чего запустит стандартный сервер WEBrick, поставляемый вместе с интерпретатором Ruby. Если установка прошла без ошибок, то вы сможете увидеть приветствие рельсов, пройдя по ссылке http://127.0.0.1:3000/.

Установка дополнительных гемов

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

Если для вас не обязательно наличие самой последней версии этого гема, вы можете ограничиться командой

sudo apt-get install librmagick-ruby

Если же вы захотите установить самую последнюю версию этого гема, вам нужно будет скачать исходные коды для библиотек ImageMagick (а они потянут за собой много-много других библиотек). Скорее всего, для вас это излишне. Но команды напишу:

sudo apt-get install libmagick9-dev
sudo gem install rmagick

Ещё лично я советую поставить вам несколько плагинов, которые облегчат вам жизнь при работе с Rails вдальнейшем. Установка одной командой:

sudo gem install mongrel BlueCloth RedCloth sqlite3-ruby ZenTest

И о каждом геме поподробнее:

  • mongrel — более быстрый, чем WEBrick сервер, написанный специально для работы с Rails. Если н установлен, то по команде ./script/server рельсы станут запускать именно его.
  • BlueCloth и RedCloth — библиотеки, используемые рельсовыми хелперами markdown и textilize соответственно для разметки текста.
  • sqlite3-ruby — библиотека для работы с базами sqlite3 (которые создаются по-умолчанию при создании рельсового приложения).
  • ZenTest — набор утилит для автоматического тестирования приложения. По команде autotest запускается тестирующий демон, который будет проверять все изменённые файлы, пробегая связанные с ними тесты. Об этой утилите я напишу позже

Теги: , ,

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Комментарии (30) на “Установка Ruby on Rails в Ubuntu (для разработки)”

  1. belo говорит:

    Спасибо!
    Поставил :-) Толково, по делу и ничего лишнего!

  2. Andrew говорит:

    Спасибо!
    Отличный мануал =)

  3. roTuKa говорит:

    Всегда пожалуйста!
    Будут вопросы – обращайтесь (-:

  4. Alex_Baum говорит:

    Спасибо, очень кстати, рельсы со старыми gem'ами не хотели работать. Опубликовал ссылку на статью в своем блоге.

  5. Alexey2008 говорит:

    Вот на чём остановился, не подскажите в чём дело?

    root@alexey-laptop:/usr/bin# gem install mongrel BlueCloth RedCloth sqlite3-ruby ZenTest
    Building native extensions. This could take a while…
    Building native extensions. This could take a while…
    Successfully installed gem_plugin-0.2.3
    Successfully installed daemons-1.0.10
    Successfully installed fastthread-1.0.1
    Successfully installed cgi_multipart_eof_fix-2.5.0
    Successfully installed mongrel-1.1.5
    Successfully installed BlueCloth-1.0.0
    Building native extensions. This could take a while…
    Successfully installed RedCloth-4.1.1
    Building native extensions. This could take a while…
    ERROR: Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby1.8 extconf.rb install mongrel BlueCloth RedCloth sqlite3-ruby ZenTest
    checking for fdatasync() in -lrt… yes
    checking for sqlite3.h… no

    make
    make: *** Нет правила для сборки цели `ruby.h', требуемой для `sqlite3_api_wrap.o'. Останов.

    Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
    Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out
    ERROR: While executing gem … (Gem::RemoteFetcher::FetchError)
    bad response Internal Server Error 500 (http://rubyforge.iasi.roedu.net/gems/ZenTest-3.11...

  6. Alexey2008-1 говорит:

    Версия убунты 8.10, тестовая страничка http://127.0.0.1:3000/.открылась

  7. roTuKa говорит:

    Попробуйте
    sudo apt-get install libsqlite3-dev

    Эта команда установит необходимый заголовчный файл sqlite3.h
    После этого, по-идее, гем установится.
    Либо, в 8.10 можно установить пакет libsqlite3-ruby, после чего тоже всё должно заработать.

  8. Alexey2008-2 говорит:

    Спасибо, установилось.

  9. antono говорит:

    После распоковки rubygems нужно еще сделать
    find . -name "._*" -print | xargs rm
    Там все засрано какими-то автобэкапами макосёвыми.

  10. roTuKa говорит:

    Dankon por gxustigo! Mi korektos gxi (-:

  11. roTuKa говорит:

    Preta!

  12. antono говорит:

    Hehe! Vi estas Esperantisto :)
    Nedankinde.

  13. ntanyone говорит:

    мне лично больше нравиться вот такой вариант обновления гемов:
    сначала через aptitude ставим rubygems v1.3.1
    потом:
    sudo gem install rubygems_update
    sudo ln /var/lib/gems/1.8/bin/rubygems_update /usr/bin/rubygems_update
    sudo rubygems_update

  14. ntanyone говорит:

    это я к тому, чтобы из исходников не ставить

  15. KorRomMar говорит:

    Вроде бы он всё поставил, но в конце пишет странные вещи :

    No definition for _wrap_new_CallbackData

    No definition for _wrap_CallbackData_proc_set

    No definition for _wrap_CallbackData_proc_get

    No definition for _wrap_CallbackData_proc2_set

    No definition for _wrap_CallbackData_proc2_get

    и так еще десяток строк про отсутствующие определения.

    Это нормально?

  16. KorRomMar говорит:

    Ставлю на убунту 9.04

  17. Alexander Semyonov говорит:

    А кто и где это вам показывает? А то у меня libastral сломался.

  18. KorRomMar говорит:

    Показывает он это, когда я выполняю команду

    sudo gem install sqlite3-ruby

  19. Alexander Semyonov говорит:

    Ничего страшного, значит. Сборщик пакета чего-то там недоделал. Работать всё должно нормально.

  20. @chikey_ru говорит:

    про сервер напишитееее..

  21. Alexander Semyonov говорит:

    Чтобы писать короче:
    gem install … и gem list …
    вместо
    gem1.8 install … и gem1.8 list …

  22. Marat говорит:

    Спасибо!
    А зачем нужно было символическую ссылку создавать на /usr/bin/gem1.8? Для того, чтобы обновление проходило нормально?

  23. Marat говорит:

    Все поставил.
    В Netbeans (использую Ruby – не JRuby) при вызове контроллера в браузере вылетает ошибка: !!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. А в браузере выходит сообщение:
    We're sorry, but something went wrong.

    We've been notified about this issue and we'll take a look at it shortly.

    В чем может быть дело? Все перерыл.
    OS – UBUNTU 9.04, IDE – NetBeans, Ruby 1.8.7

  24. Alexander Semyonov говорит:

    Вы никогда не пробовали следовать рекомендациям, которые дают вам приложения?
    Netbeans, ведь, явно говорит вам: «Please install the mysql gem and try again»

    Воспользуйтесь его советом и выполните в терминале:
    sudo gem install mysql

    Возможно, эта команда ругнётся из-за отсутствия хедеров для Mysql, тогда выполните:
    sudo apt-get install libmysqlclient-dev
    и повторите установку гема.

  25. @hodzanassredin говорит:

    спасибо огромедное просто молодец

  26. Артём говорит:

    Если первым способом устанавливать rubygems, то в каталоге /usr/bin/ не будет файла rails, придётся ставить символическую ссылку. Так что второй способ предпочтительней.

  27. @soulim говорит:

    Привет, а не было ли проблемы с ZenTest на Ubuntu 9.10. У меня после установки ZenTest 4.1.4 недоступна команда autotest.

  28. Alexander Semyonov говорит:

    Проблема скорее в остутствии необходимых gem’ ов, чем в обновлении Ubuntu.
    Попробуйте: sudo gem install autotest-rails

  29. @soulim говорит:

    Не помогло. Попробую найти причину, и при положительном результате поделюсь опытом.

  30. Alexander Semyonov говорит:

    Ах да, ещё дело может быть в том, что вы RubyGems поставили из пакета, а не из исходников. Тогда бинарники из гемов просто не попадают в PATH. Нужно или исправить PATH, чтобы он включал папку с бинарниками гемов (что-то вроде /var/ruby/gems/1.8/bin, поищите точное название), либо ставить RubyGems из исходников, тогда такой проблемы не наблюдается.

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

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