Статьи

Изучение бета-версии Rails 3, часть I: Bundler

Rails 3
Бета-версия Ruby on Rails 3.0 была выпущена еще в феврале. Это результат слияния проекта Rails с Merb (еще одна среда MVC на основе Ruby), а также с множеством исправлений ошибок, улучшением производительности и новыми функциями.

Я немного поиграл с ним для личного проекта, над которым я работаю, поэтому я решил поделиться с вами некоторыми интересными новыми функциями. Многие публикации о Rails 3 нацелены на хардкорных руководителей Rails, поэтому они вряд ли понравятся всем, кто раньше не использовал фреймворк (или кто только балуется с ним). Я собираюсь использовать другой подход и попытаться показать вам, что сейчас самое подходящее время, чтобы прыгнуть в Rails и начать играть. Если вы попробовали Rails обратно в ветвях 1.x или 2.x, возможно, одна из новых функций, которые я выделю, убедит вас попробовать еще раз.

Итак, без дальнейших церемоний, давайте посмотрим на первую особенность Rails 3, с которой может столкнуться новый разработчик. В Rails 3 представлен Bundler, очень простой способ управления зависимостями вашего приложения. Приложения на Rails обычно зависят от множества гемов Ruby (которые Ruby называет своими библиотеками). Например, вы можете использовать Paperclip для обработки моделей с вложенными файлами, Devise для аутентификации пользователей или Cucumber для написания интеграционных тестов. Вплоть до Rails 2.1 вам приходилось самостоятельно управлять любыми зависимостями вашего приложения. Если вы развернули свое приложение на сервере, на котором отсутствовал гем или у него была другая версия, оно могло просто сломаться без предупреждения. В Rails 2.1 (и 2.2) gem.config некоторое управление зависимостями в виде gem.config , но его использование было немного загадочным, и оно было подвержено поломкам.

Bundler из Rails 3 делает управление самоцветами настолько простым, насколько вы можете себе представить. Вы помещаете файл в корень вашего приложения, который называется Gemfile , где вы указываете, какие гемы нужны вашему приложению в следующем формате:

 gem 'paperclip', '2.3.0' 

Строка версии является необязательной; если он отсутствует, Bundler получит последнюю версию, доступную в Gemcutter, главном хранилище Ruby Gem. После того, как вы настроите Gemfile, все, что вам нужно, это запустить эту команду из каталога вашего приложения:

 bundle install 

Затем Bundler загрузит все необходимые гемы (и любые их зависимости) на ваш компьютер.

Только эти функции делают Bundler отличным дополнением к Rails, но это еще не все. Bundler также легко устанавливает гемы с GitHub . Все, что вам нужно сделать, это указать URL-адрес и ветку, а остальное обрабатывается автоматически, когда вы запускаете bundle install . Например, текущая версия Paperclip еще не обновлена ​​для поддержки Rails 3. Однако Джейсон Кинг разветвил проект на GitHub и исправил его, чтобы он работал. Итак, чтобы импортировать исправленную версию в мое приложение, все что мне нужно написать:

 gem 'paperclip', :git => 'git://github.com/JasonKing/paperclip.git', :branch => 'rails3' 

Мое приложение теперь получит эту исправленную версию. Когда официальный Gem Paperclip обновляется, все, что мне нужно сделать, это удалить параметры :git и :branch и повторно запустить bundle install . Теперь я буду запускать версию от Gemcutter.

Еще одна замечательная особенность Bundler заключается в том, что вы можете указать среды, в которых требуется данный драгоценный камень, поместив свои операторы драгоценного камня в группы:

 group :test do gem 'webrat' gem 'shoulda' end 

С этим кодом в моем Gemfile я могу запустить следующее на моей рабочей машине:

 bundle install --without test 

Это полезно, потому что я бы предпочел не беспокоиться об управлении библиотеками, необходимыми для компиляции Webrat и его зависимостей на компьютере, на котором они никогда не будут использоваться.

Bundler — только одна из многих новых функций в Rails 3; это просто первое, с чем вы столкнетесь при настройке нового приложения. На следующей неделе я рассмотрю несколько функций, которые напрямую влияют на развитие. А пока ознакомьтесь с объявлением о выпуске инструкций по установке бета-версии и официальными примечаниями к выпуску, чтобы узнать обо всем, что есть в новой версии.