Статьи

RubyMine: понимание кода для Ruby и Rails

Эта статья была спонсирована JetBrains . Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.

Если вы разрабатываете на Ruby или Rails, возможно, вы слышали о RubyMine .

RubyMine — это IDE для Ruby и Rails, разработанная JetBrains. Он существует уже почти 10 лет и имеет огромную базу пользователей. И все же, когда мы посещаем отраслевые мероприятия и шоу, у нас часто возникает вопрос: «Хорошо, что делает RubyMine, чего не может текстовый редактор?» . Я ни в коем случае не пытаюсь уменьшить ценность или полезность бесплатных редакторов кода, но «скажем так, есть много!» — мой обычный ответ, когда я запускаю IDE для быстрой демонстрации. В этом посте я хотел бы рассказать вам о ключевой вещи, которая выделяет RubyMine: Code Insight .

Code Insight включает в себя такие вещи, как интеллектуальное автозавершение кода, навигация по коду, языковые проверки с помощью быстрых исправлений, интеллектуальные уведомления и быстрая документация в редакторе. Так много терминов, но что они делают и зачем они вам нужны? Позвольте мне обратить ваше внимание на пять минут, прежде чем вы вернетесь к своему $ EDITOR $ и продолжите свою работу.

Автоматическое завершение кода

Эта функция не нуждается в представлении, так как она существует во всех популярных редакторах. Однако автодополнение RubyMine не ограничивается встроенными ключевыми словами Ruby / Rails и текстовым автодополнением. Поскольку среда IDE индексирует весь ваш проект при каждом запуске, она может автоматически завершать работу практически любой релевантной сущности независимо от того, где она определена. Вам не нужно открывать файл на отдельной вкладке, чтобы автоматически заполнять любые объявления из него — RubyMine уже знает все о вашем проекте!

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

RubyMine - создание новой таблицы

Но разве вы не хотели бы иметь доступ к колонкам позже, когда вы работаете над моделью? Конечно, вы сделаете это, и IDE сделает это за вас так же, как и автозаполнение всех встроенных в Rails вещей:

RubyMine - IDE автозаполнения

Как насчет возможности автоматического завершения методов, ранее определенных в модели, скажем, в контроллерах или других файлах ruby ​​в вашем проекте? Ты понял:

Методы автозаполнения RubyMine

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

Вы можете работать со своими взглядами таким же образом. Я не говорю только о базовых предложениях синтаксиса HTML и ERB, они даны, но на самом деле все указанные сущности в вашем проекте:

RubyMine - работай со своими взглядами

Перейти к объявлению (иначе Перейти к определению)

Когда я общаюсь с нашими клиентами, я всегда спрашиваю их, какая у них любимая функция RubyMine. Лучший ответ за все время — «Иди к скалам декларации!» . Хотя я бы предпочел услышать истории успеха о нашем отладчике графического интерфейса или других расширенных функциях, положительные отзывы всегда хороши! Но мне стало любопытно, почему это происходит снова и снова, поэтому в конце концов я начал сравнивать объявление Go to RubyMine с определением Go to, которое существует в некоторых популярных редакторах.

Без сомнения, IDE оказалась гораздо более надежной при переходе к декларациям. Просто используйте ⌘ + клик | Ctrl + Click (или ⌘ + B | Ctrl + B, если вы поместите курсор на нужный объект) и перейдите к нужному определению:

RubyMine - Go объявления

Вы можете не только легко переходить к классу, методу или любому другому объявлению сущности в своем проекте, но вы также можете переходить к определениям самоцветов и их сущностей. Нужно немного переписать Ruby on Rails, чтобы сделать ваш проект лучше? Больше ни слова:

RubyMine - Перейти к декларации переписывает

Я попытался найти некоторые плагины, которые могли бы сделать то же самое для редакторов кода, которые я проверял в последнее время, но они не сильно помогли. Если вы знаете, ваши предложения в комментариях будет принята с благодарностью. Но до тех пор я придерживаюсь своей истории: переход к декларации сам по себе должен заставить вас попробовать RubyMine!

Статический анализ

Что мне нравится в Atom, так это его четкая подсветка синтаксиса. Это не позволит мне пропустить закрывающий тег или end Я также обнаружил отличный плагин, который подчеркивает все нарушения RuboCop и даже позволяет автоматически исправить нарушения для файла. Слава, Атом и создатель плагинов, это круто!

До недавнего времени я бы сказал, что этот вид поддержки RuboCop такой же хороший, как и тот, который мы имеем в RubyMine. Но с последней версией RubyMine 2017.3 вы теперь не только можете исправить весь файл с помощью RuboCop, но даже можете выбрать, хотите ли вы автоматически исправить все возможные нарушения, определенный отдел полиции или даже определенный тип нарушения. Вы получаете все это из коробки, прямо из редактора, и просто нажимая Alt + Enter:

RubyMine - статический анализ

Что касается проверки синтаксиса, RubyMine, безусловно, достаточно умен, чтобы обеспечить базовую подсветку синтаксиса для Ruby, Rails, JavaScript, HTML, CSS, ERB и многих других. Кроме того, в среде IDE есть ряд собственных полезных намерений, например, возможность конвертировать блоки do … end{} Найти и применить их с помощью того же Alt + Enter:

RubyMine - проверка синтаксиса

Кстати, кроме статического анализа, но с точки зрения намеренных действий, RubyMine даже предоставляет встроенную проверку RegExp:

RubyMine встроен в программу проверки RegExp

Как и следовало ожидать, эти и другие проверки и намерения можно найти и легко включить или отключить в настройках.

Еще одна вкусность Code Insight — подсказки имен параметров . Как вы можете догадаться по его имени, это поможет вам понять имя аргумента, который вы передаете методу:

Подсказки имени параметра RubyMine

Отличной альтернативой подсказкам имен параметров является информация о параметрах, которая может быть вызвана нажатием ⌘ + P | Ctrl + P. Например, это может быть полезно, если вы понимаете, что встроенные подсказки слишком сильно раздражают вас, и вы решили отключить их, но в какой-то момент вам нужно проверить имена параметров, которые вы объявили:

Информация о параметре RubyMine

Умные уведомления и действия

Как еще одна особенность торговой марки всех IDE JetBrains, RubyMine предоставляет интеллектуальные уведомления, которые помогают пользователям никогда не забывать о рутинных задачах, таких как настройка обнаруженных источников данных или запуск bundle install

Есть более многоэтапные умные действия, которые могут пригодиться. Например, RubyMine имеет ярлык для быстрой навигации между сущностью Rails, например, контроллером, и его тестом (Shift + ⌘ + T | Ctrl + Shift + T). Если такого теста не существует, RubyMine предложит создать его на основе установленной вами инфраструктуры тестирования. Но что, если у вас еще нет тестовой среды? В этом случае RubyMine добавит необходимый гем в Gemfile, установит его для вас, а затем перейдет к недавно созданному тесту контроллера:

Сокращение RubyMine от сущности Rails для тестирования

Говоря о сущностях Rails, вы также можете перейти к связанному символу Rails с помощью ⌃⌘ ↑ / Ctrl + Alt + Home.

Быстрая документация

Наконец, RubyMine предоставляет в редакторе быструю документацию для встроенных объектов Ruby / Rails, а также для объектов, объявленных в приложении. Это означает, что вам не нужно выходить в Интернет каждый раз, когда вы наталкиваетесь на какой-то псевдоним, или искать в своем приложении объявление метода, которое вы не можете запомнить. Просто поместите курсор на ключевое слово, которое вы хотите найти, и нажмите F1. Самое приятное то, что он также работает из списка автозаполнения:

RubyMine быстрая документация

Вышеупомянутые возможности охватывают стек функций Code Insight в RubyMine, но в IDE есть еще много функций, которые нужно любить: безопасный рефакторинг, отладчик на основе графического интерфейса и наборы для тестирования, а также ряд возможностей навигации . Посетите наш сайт, чтобы узнать больше о них.

Если вы найдете что-то из этого, попробуйте скачать RubyMine и использовать его бесплатно в течение месяца. Если вся ваша команда разработчиков хотела бы попробовать RubyMine, вы также можете подать заявку на расширенную 90-дневную пробную версию.

Наконец, не забудьте проверить, имеете ли вы право на получение лицензии со скидкой: проекты OSS и студенты могут подать заявку на получение бесплатных лицензий JetBrains, а стартапы могут получить 50% скидку!

Счастливого развития!