На главную страницу ЗАО Софткей
 Главная   Новости   Статьи   Пресс-релизы   Рассылки 
 
MS O365 test

RubyMine: IDE для Ruby. Часть 1

30.07.2009 / Программы / Виктор Деревянко

RubyMine

Язык программирования Ruby активно набирает популярность. Мощный объектно ориентированный интерпретируемый язык высокого уровня, грамотно спроектированный и весьма удобный. Основной недостаток Ruby (сравнительно низкая скорость работы) уже устранен в его следующей версии (Ruby 1.9). Все больше программистов интересуются Ruby, все больше компаний начинают применять его в свой работе. Популярности Ruby способствует наличие веб-ориентированной среды разработки Ruby on Rails, предоставляющей простой, быстрый и удобный способ разработки веб-приложений любого уровня сложности. А ведь все идет к тому, что будущее за веб-приложениями. Так что рост популярности Ruby вполне закономерен.

Хотя часть Ruby-разработчиков по-прежнему работают в обычных текстовых редакторах, например TextMate, Vim и Emacs, многие предпочитают интегрированные среды разработки (IDE). Это не удивительно. Современные IDE обеспечивают программисту массу удобных возможностей, исключая рутину и способствуя значительному ускорению процесса разработки. Трудно переоценить возможности хорошего рефакторинга, автозавершения кода и удобного отладчика. Беда только, что IDE для Ruby еще весьма не совершенны. Правда, в последнее время ситуация стремительно меняется.

Совсем недавно появилась новая среда разработки для Ruby - RubyMine от компании JetBrains. Это кросс-платформенная IDE, построенная на платформе IntelliJ IDEA - одном из флагманских продуктов компании, разрабатываемом с 2001 года. К настоящему времени это мощнейшая IDE, обеспечивающая разработчиков наиболее полным комплектом средств разработки. Рефакторинг и анализ кода, полноценный отладчик, мощный редактор, встроенная поддержка систем контроля верстки и тестирования кода и так далее и тому подобное.

IntelliJ IDEA позволяет вести разработку на множестве различных языков программирования. В 2007 году для IntelliJ IDEA был выпущен плагин, реализующий возможности вести разработку и на Ruby. А теперь вот появилась отдельная IDE RubyMine. Зачем - понятно. RubyMine - это отдельный продукт, который можно использовать, не покупая IntelliJ IDEA.

Функциональность RubyMine и Ruby-плагина для IntelliJ IDEA практически схожа. Разница в том, что RubyMine использует более новую версию IntelliJ IDEA, чем та, которая доступна в настоящий момент на сайте компании. После выхода IntelliJ IDEA 9 возможности RubyMine и плагина для IntelliJ IDEA сравняются.

По замыслу разработчиков RubyMine - это первая в серии легковесных IDE, построенных на платформе IntelliJ IDEA. Планируются и другие версии IDE - для веб-разработки (HTML/CSS/JS/PHP), Python и так далее.

RubyMine выгодно отличается от других IDE для Ruby по ряду параметров. Во-первых, RubyMine проводит глубокий анализ кода и способна выводить типы локальных переменных и типы возвращаемых методами значений. За счет этого обеспечивается высокое качество механизмов рефакторинга, автозавершения и валидации кода. Во-вторых, RubyMine поддерживает Ruby On Rails. Причем поддержка Rails встроена на самом низком уровне. Средства рефакторинга, учитывающие структуру Rails-приложения, отдельный вид для просмотра структуры Rails-проекта, специальные средства навигации, Rails-консоль, поддержка RHTML и YAML и так далее. Кроме того, RubyMine поддерживает множество технологий, напрямую связанных с Ruby-разработкой: RSpec, Cucumber, Rake, Test::Unit, Test-Spec. Наконец, RubyMine поддерживает не только Ruby, но и другие языки, используемые при разработки веб-приложений, - HTML, CSS, JavaScript, XML. Поддерживает на хорошем уровне, со средствами рефакторинга и анализа кода. Другими словами, для Rails-разработчика RubyMine - ценнейший инструмент.

В первой части статьи мы рассмотрим возможности RubyMine по редактированию, навигации и отладке кода. Вторая часть будет посвящена тяжелой артиллерии - поддержке Rails, систем контроля версий и автоматизации тестирования.

Интерфейс, средства редактирования и навигации

В RubyMine можно создавать проекты двух типов - для Ruby-разработки и для разработки Rails-приложения. В последнем случае для приложения создается готовая инфраструктура. Чтобы создать новый проект для уже готового приложения, достаточно указать RubyMine директорию с исходными кодами.

Расположение окон в RubyMine соответствует общепринятым стандартам. Слева расположен менеджер проекта, справа - окно редактора, снизу - панель, отображающая разнообразные дополнительные окна: список TODO, окно предварительного просмотра, результаты инспекции кода, список зависимостей и так далее.

В менеджере проекта две вкладки - Project и Structure. На вкладке Structure показывается структура классов, объявленных в текущем файле. На вкладке Project - структура файлов проекта и список используемых джемов. Вкладка позволят просматривать структуру файлов в двух режимах: Project (структура директорий) и Rails (структура Rails-приложения с разделением файлов по моделям, контроллерам и видам).

Редактор в RubyMine просто отличный. В нем есть все. Подсветка синтаксиса, возможности схлопывания частей кода, форматирование кода в соответствии с параметрами стиля кодирования, автоматическое закрывание и подсветка скобочек, команды быстрого комментирования кода и так далее.

Средства навигации по коду очень мощные. Можно найти буквально все и везде. В Ruby-коде можно искать вхождения методов, классов, переменных, параметров, полей и тому подобного. В файлах CSS, XML и HTML - вхождения стилей, классов, тегов и атрибутов. Причем имеется три варианта поиска вхождений идентификаторов. Найденные вхождения могут быть показаны на отдельной панели (с детальной информацией), представлены в виде контекстного меню (для быстрого перехода к выбранному участку кода) или же подсвечены прямо в тексте программы.

RubyMine
Интерфейс RubyMine. Показаны три варианта поиска вхождения идентификатора Image2Controller

RubyMine поддерживает шаблоны кода (live templates, то же самое, что code snippets). Для каждого шаблона определен короткий идентификатор, по которому шаблон удобно находить в общем списке шаблонов.

В редакторе очень удобно работать с клавиатуры. Во-первых, все без исключения списки в RubyMine имеют возможность быстрой фильтрации. Это просто шикарная возможность. Во-вторых, с клавиатуры можно подать абсолютно любую команду. Даже если вы не помните требуемое клавиатурное сокращение, вы можете открыть полный список команд, найти и вызвать нужную команду. Редактор поддерживает несколько стандартных клавиатурных схем, в том числе для Visual Studio, Emacs и TextMate - выбирай привычную.

Анализ кода и рефакторинг

RubyMine умеет анализировать код программы. На этом базируется несколько возможностей IDE: автозавершение кода, подсветка ошибок, рефакторинг, отслеживание зависимостей и отслеживание намерений (intention actions).

В IntelliJ IDEA имеется несколько режимов автозавершения кода. RubyMine поддерживает лишь базовый, когда среда анализирует контекст и предлагает все варианты, достижимые для текущей позиции курсора. Другие типы автозаполнения (SmartType и ClassName) в RubyMine пока не поддерживаются, хотя эти команды и присутствуют в главном меню.

RubyMine
Переименование идентификатора средствами рефакторинга

Рефакторинг в RubyMine - на высоте. Поддерживаются следующие методы рефакторинга:

  • переименование (Rename refactoring);
  • выделение кода в отдельный метод (Extract Method), в том числе метод, возвращающий сразу несколько значений;
  • введение переменной (Introduce Variable);
  • замещение метода (Override Method);
  • извлечение части кода (extract partial; выделяет выбранную часть HTML в отдельный файл и создает соответствующую Rails-конструкцию render:partial вместо исходного HTML-кода).

RubyMine поддерживает пока существенно меньше методов рефакторинга, чем IntelliJ IDEA, однако уже в ближайших версиях RubyMine их количество увеличится. RubyMine позволяет предварительно просматривать список изменений, которые будут внесены при рефакторинге, и запрещать ненужные изменения. Все внесенные изменения можно отменять все сразу. Средства рефакторинга работают во всех поддерживаемых языках, в том числе в случаях, когда языки смешаны. Например, при рефакторинге будет корректно отредактирован Ruby-код, входящий в HTML-файлы.

RubyMine
Инспекция кода и функция Intention actions

Отдельно следует отметить наличие функции отслеживания намерений (Intention actions). В процессе работы пользователя над кодом RubyMine анализирует код, находит синтаксические ошибки и определят места в коде, которые можно улучшить или оптимизировать. В случае обнаружения подобного проблемного кода RubyMine не просто сообщает об ошибке подчеркиванием кода, но и определяет, что именно пользователь намеревался сделать. И предлагает один или несколько способов исправления кода. Рядом с проблемным местом в коде появляется значок лампочки, сигнализирующий о проблеме. Нажав на него, можно посмотреть список предлагаемых решений. Использовать или не использовать предлагаемое решение - решать вам. Но если вы решаете его использовать, то RubyMine вносит соответствующие исправления в код автоматически. Типичные примеры ошибок, которые отслеживаются и корректируются таким образом, - это нарушение стиля кодирования, неразрешимая Ruby-ссылка, неиспользуемая локальная переменная, недостижимый код и так далее. RubyMine поддерживает отслеживание намерений не только для Ruby, но и для HTML, XML, CSS, JavaScript и тому подобного.

Намерения определяются на лету, в процессе фонового анализа кода. Помимо этого RubyMine позволяет провести анализ кода по требованию, при котором анализируется весь код проекта в целом (Inspection). В процессе такого анализа RubyMine найдет все проблемные места в коде и выведет полный список с детальными пояснениями. Любую найденную проблему можно исправить вручную или через механизм отслеживания намерений.

RubyMine
Просмотр зависимостей с помощью Dependency Viewer

Еще один полезный инструмент - Dependency Viewer. С его помощью можно отслеживать наличие зависимостей между различными файлами проекта. Dependency Viewer позволяет выбрать два зависящих друг от друга файла, после чего показывает детальный список найденных зависимостей.

Запуск и отладка приложения

RubyMine позволяет запускать различные типы приложений: Rails, Rake, Ruby, RSpec, Cucumber, Ruby remote debug, Test-Spec, Test::Unit. Для каждого варианта запуска создается отдельная конфигурация, причем Release- и Debug-конфигурации задаются отдельно.

RubyMine
Настройка параметров конфигурации запуска

Отладчик в RubyMine построен на том же движке, что и отладчики в других IDE, и, по большому счету, имеет те же самые возможности. Поддерживаются точки прерывания, в том числе условные точки прерывания. Можно просматривать стек вызовов, значения локальных переменных, список потоков. Есть возможности пошаговой отладки и вычисления выражений, удаленной отладки и анализа стека.

RubyMine
Отладка в RubyMine

RubyMine позволяет также запускать консоли IRB и Rails, в которых команды можно подавать в интерактивном режиме.

Технологии и версии Ruby

Текущая версия RubyMine - 1.1.1. Программа поддерживает MRI Ruby 1.8.x, JRuby, IronRuby и MacRuby. Поддержки Ruby 1.9 пока нет (она планируется в RubyMine 1.5). Начиная с RubyMine 1.1 поддерживается Cucumber. Помимо Ruby, RubyMine позволяет работать с языками RHTML, JavaScript, HTML/XHTML, CSS, XML и HAML.

Выводы

Первая версия RubyMine появилась совсем недавно, однако она производит впечатление зрелого и мощного продукта. Сказывается наследие IntelliJ IDEA. Шикарный редактор, мощные средства навигации и анализа кода. Работать удобно - все команды можно подавать прямо с клавиатуры, мышка практически не требуется. Во всех списка есть быстрый фильтр, позволяющий мгновенно находить нужный элемент списка. RubyMine хорошо настраивается - можно выбрать удобную клавиатурную схему, цветовую схему, настроить правила форматирования кода.

Несмотря на то что RubyMine может быть использована для разработки любого Ruby-приложения, больше всего преимуществ от ее использования получат Rails-разработчики. Именно они - целевая аудитория данной IDE. В следующей части статьи речь пойдет о функциональности RubyMine, направленной на оптимизацию работы с Rails-приложениями, поддержке систем автоматического тестирования и интеграции с системами контроля версий.


Ссылки по теме:

Автор статьи: Виктор Деревянко


Рубрики статей
Все статьи
Аналитика
Программы
Игры
Интернет
Авторские права
Интервью
События в мире ПО
Рассылки
Новости мира ПО
Статьи: Мир ПО
Статьи: Программы
Статьи: Игры
Архив выпусков
  «   Ноябрь 2018   »  
Пн Вт Ср Чт Пт Сб Вс
   1234
567891011
12131415161718
19202122232425
2627282930  
Поиск в архиве

Логин / пароль:
запомнить




Наши партнеры:

 САПР и графика



Написать редактору  | RSSЭкспорт новостей и обзоров


Rambler's
Top100 Rambler's Top100

Разработка компании «Битрикс»
Разработано
«Битрикс»


Copyright © 2001-2018 ЗАО «Софткей»