Я постараюсь поддерживать эту статью в актуальном состоянии. На данный момент, все действия, описанные в статье, актуальны для следующих версий ПО:
- 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
- RubyGems в репозитории Ubuntu Karmic пока актуальные, поэтому можно смело ставить из репозитория командой:
sudo apt-get install rubygems
- Однако, если вы предпочитаете ручную установку 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, вы можете обновить её до текущей:
Иногда, после обновления этой командой, gem может начать выдавать ошибку:sudo gem update --system
Для её устранения, необходимо отредактировать исполняемый файл (/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
запускается тестирующий демон, который будет проверять все изменённые файлы, пробегая связанные с ними тесты. Об этой утилите я напишу позже