Статьи

Инструменты для современной разработки Ruby

Первоначальная публикация этой статьи была приписана не тому автору. Это было исправлено, а виновные уволены. Извини, Дэвид!

Терминал

Веб-разработка значительно изменилась за последние 20 лет. Например, современная среда разработки была бы неузнаваема для кого-то, кто разрабатывал Coldfusion в конце 90-х. Повышенное внимание к лучшим практикам и продуктивности разработчиков, безусловно, сделало программное обеспечение более легким в обслуживании, но это происходит за счет дополнительной сложности. Чтобы справиться с этой сложностью, требуется современная среда разработки; эта статья обрисовает в общих чертах некоторые из моих личных любимых инструментов.

Tmux

Tmux — это мультиплексор терминалов (думаю, экран ), что означает, что вы можете иметь несколько терминалов в одном сеансе оболочки. Это позволяет вам разделять панели, перемещать их и повторно подключаться к сеансу tmux с другого компьютера. Это особенно замечательно, когда он развернут на сервере, так как вы можете запустить долгосрочную задачу, отключиться, и ваш сеанс tmux продолжит работать.

Настоящая сила Tmux для разработки заключается в том, чтобы знать, в каком окне работает каждый из ваших различных инструментов, потому что с помощью некоторых быстрых оконных ярлыков вы можете перемещаться настолько быстро, что поток становится инстинктивным. Чтобы помочь этому, tmuxinator устанавливает профили (protip: связывает их с ярлыками Tmux, чтобы облегчить открытие различных типов проектов, таких как Rails, Sinatra и т. Д.), Что прекрасно дополняет Tmux.

Кроме того, Tmux расширяется через экосистему плагинов . Посмотрите, но я бы порекомендовал Менеджер плагинов Tmux , tmux-battery и tmux sensible .

Если вы ищете простой старт с Tmux, ознакомьтесь с этой статьей .

Рыбы

Bash все в порядке, но он не очень хорошо состарился, и есть лучшие альтернативы терминалам. ZSH — отличный выбор, но лично мне не хватает мотивации, чтобы тратить время на обучение настройке еще одного программного обеспечения. Для этого я бы порекомендовал Fish . У него отличное завершение команд, он полностью подходит для написания сценариев и выглядит намного лучше, чем Bash. Лучше всего, это просто работает из коробки (хотя есть несколько незначительных идиосинкразий, с которыми вы столкнетесь. Кроме того, ваши псевдонимы Bash не будут работать, но перевод прост, и это сравнительно низкие затраты на установку). Мне особенно нравится взаимодействовать с Git таким образом, но недавно я обнаружил превосходную Gitsome , которая предлагает отличную интеграцию с Github и непревзойденное автозаполнение, поэтому я сейчас колеблюсь между ними.

напор

Vim является краеугольным камнем моего окружения. Сильно настроенный для ускорения разработки, он больше напоминает полноценную (хотя и легковесную!) IDE. Давайте пройдемся по некоторым обычно полезным плагинам, а затем перейдем к некоторым специфичным для Ruby. Вы можете скачать мои vim dotfiles здесь .

Навигация по проекту может быть громоздкой. К счастью, богатая экосистема Vim действительно вступает здесь в свои права. Для просмотра проекта я рекомендую отличное Nerdtree . Это даст вам возможность просматривать древовидную структуру, предоставляя вам аккуратный общий обзор текущего каталога и его дочерних элементов. Нажатие m в этом режиме позволит вам удалять, создавать и переименовывать узлы, не покидая vim. Возвышенные стойкие люди будут наслаждаться ctrlp ; отличный нечеткий сопоставитель, который особенно хорош, когда у вас есть файлы с одинаковыми именами, как, например, в проекте Rails. Наконец, я часто хочу получить доступ к файлам, которые я недавно использовал; MRU делает именно это.

Хотя это некоторые из моих любимых, вот некоторые другие плагины vim, которые заслуживают особого упоминания:
* Беглец : интеграция с Git прямо в Vim
* Supertab : завершение кода
* Авиакомпания : Приятно выглядящая строка состояния
* TComment : функция быстрого комментирования / раскомментирования
* Surround : Оберните обычные выделения границ vim в скобках или в кавычках.
* Autoclose : автоматически закрывать скобки или кавычки
* Gundo : интерфейс к хорошо скрытой древовидной структуре Vim, в которой хранятся изменения документа, что часто оказывается гораздо более полезным, чем линейная функция отмены

Ruby-специфичные плагины

Прежде всего, вам нужно убедиться, что ваша версия Vim скомпилирована с Ruby:

 vim --version | grep ruby 

Приведенная выше команда должна включать +ruby . Если этого не произойдет, вам нужно либо перекомпилировать Vim с поддержкой ruby ​​( относительно тривиально ), либо установить версию Vim с поддержкой Ruby, например MacVim. Хотя многие плагины будут работать без него, вы упустите такие полезные функции, как автозаполнение.

vim-ruby — это первый порт захода. Он добавляет подсветку синтаксиса, автозаполнение, подобное IntelliSense, и даже плагины компилятора. Это должно дать вам много основных функций IDE из коробки. Он даже имеет подсветку синтаксиса erb!

Тим Поуп — человек, который дал нам несколько отличных плагинов для Ruby (и других). Вы могли бы сделать хуже, чем проверить его проекты и интегрировать их в свой рабочий процесс. Если вы собираетесь получить один плагин для помощи в разработке Rails, это должен быть vim-rails . Этот плагин приносит всю функциональность командной строки непосредственно в Vim, что чрезвычайно полезно, когда вы сочетаете его с ярлыками Vim. Давайте углубимся в некоторые полезные команды здесь:

gf — это контекстно-зависимый переключатель, который переместит вас прямо в связанный файл. Вы можете использовать подходящие имена :A (альтернативный) и :R (связанный) для перехода от модели к схеме, шаблона к помощнику и контроллера к функциональному тесту.

Интерфейс с rails в командной строке :Rails (также можно получить доступ к rake через :Rake , если вы предварительно Rails 5.)

:Rextract <filename> можно извлечь, визуально выбрав область и используя :Rextract <filename> . Это кажется такой незначительной функцией, но невероятно полезно при рефакторинге неуклюжего представления.

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

vim-dispatch — еще одно творение Тима Папы. Это позволяет использовать Tmux для предоставления асинхронной функциональности в Vim. Полезно для запуска модульных тестов без блокировки ввода или открытия другой панели.

vim-rspec — это легкий RSpec-бегун для Vim. Мне нравится отображение, если я не использую Guard.

Для дальнейшего чтения по этой теме, ознакомьтесь с этой статьей, которая гораздо глубже.

Похвальные грамоты:

На самом деле это не плагин Vim, но я все равно включу его здесь: gem-browse — это Ruby Gem, который открывает исходный файл библиотеки в вашем редакторе, что экономит время, когда вам нужно просмотреть источник какой-то непонятной библиотеки, чтобы посмотрите, почему ваш код не выполняется должным образом.

докер

Docker — сравнительно новая технология по сравнению с другими, но не менее важная. Он облегчает простое и независимое от платформы развертывание, выполняя «контейнер» в одном экземпляре Linux, избегая затрат на запуск и обслуживание традиционных виртуальных машин. Кроме того, изоляция, обеспечиваемая этим подходом, обеспечивает дополнительный уровень защиты.

Docker когда-то было немного сложно для начала, что требовало превосходного Как использовать Docker на OS X: Пропавшее руководство , но сейчас все стало лучше. Отправляйтесь на docker.com, чтобы начать.

охрана

Я большой поклонник гвардии . В то время как в больших проектах с огромным количеством тестов он не так уж и хорош, любой быстроразвивающийся проект без этого ограничения извлекает огромную выгоду из мгновенной обратной связи, которую он предоставляет разработчикам. Поддерживая загрузчик Spring, он может значительно сократить время, затрачиваемое на выполнение тестов, и я бы искренне рекомендовал объединить его с minitest-reporter для более информативного вывода тестов.

подглядывать

Прай это фантастическое дополнение к вашей драгоценности. Мощная альтернатива irb, она позволяет интегрировать командную оболочку (git, vim и т. Д.), Подсветку синтаксиса и мощные функции просмотра истории и воспроизведения. Используемый совместно с гемом pry-doc , он включает в себя несколько полезных функций, таких как show-doc для show-source документации и show-source для просмотра исходного кода встроенных в Ruby. Он может хорошо работать в качестве отладчика, и, как тот, кто предпочитает разработку, основанную на REPL, я нахожу его глотком свежего воздуха по сравнению со стандартным irb.

Pgcli

С появлением ORM, SQL — это то, с чем я не так регулярно взаимодействую, а это означает, что автозаполнение экономит время, когда я не могу точно вспомнить, как что-то сделать. Pgcli (и его двоюродный брат Mycli, если вы застряли с mysql) предлагают эту точную функциональность и с подсветкой синтаксиса для загрузки. Настоятельно рекомендуется.

остолоп

Если вы можете пережить, возможно, самый болезненный процесс конфигурирования в современном программном обеспечении, Mutt — отличный выбор для доступа к электронной почте из командной строки. Он использует привязки Vim, и я определенно ценю отсутствие необходимости покидать свою оболочку для обработки электронной почты.

Irssi

Я считаю IRC бесценным ресурсом, но определенно тем, который лучше работает в оболочке. irssi — мой клиент по выбору (обязательно ознакомьтесь с расширениями ). Я также слышал хорошие вещи о выходных .

Резюме

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