Дэн Кроак — директор по маркетингу известного аналитического магазина. До того, как он переехал в Сан-Франциско, чтобы открыть филиал Thinkbot на западном побережье, Дэн был моим другом в Бостоне, который помог мне изучить все тонкости Ruby on Rails.
Дэн — хороший парень, чтобы знать, потому что он и его магазин создали все, начиная с ядра Rails и заканчивая многочисленными гемами и плагинами (такими как Capybara Webkit и Bourbon ), которые известны всему веб-сообществу. Я хотел сесть с ним и поговорить о Rails, его эволюции и о том, как его компания создала такую среду вокруг Ruby on Rails.
Q Как вы начали работать с мыслителем?
Я нанял Thinkbot в 2006 году для завершения побочного проекта. Я писал веб-приложения ASP.NET днем. Я хотел узнать об открытом исходном коде, Ruby on Rails, тестовой разработке, Unix, контроле версий и т. Д.
После того, как они завершили проект, я сделал несколько фрилансов на Rails, затем подал заявку на работу в mindbot, и они наняли меня. Я сейчас в компании более пяти лет.
Q Как ваша фирма остановилась на Ruby on Rails?
Рельсы поразили их как нечто, что было бы замечательно.
В 2005 году Джон и Чад занимались консалтинговыми проектами на разных языках, таких как Perl и Java. После того, как они выполнили несколько проектов в Ruby on Rails, они почувствовали, что это современный уровень и что они могут быть надежно продуктивными с ним.
Как команда, им нужно было выбрать один язык / структуру и специализироваться на нем. Рельсы поразили их как нечто, что было бы замечательно. Сообщество, окружающее язык, было из тех людей, с которыми они хотели бы работать. Они были одними из первых консультантов, объявивших, что Rails — их специальность.
Это был переломный момент — они могли быть магазином, который разделял технологии, но, выбрав один, особенно перспективный, такой как Rails, они смогли привлечь таких замечательных людей, как Таммер Салех, Джаред Кэрролл, Эрик Милл и другие. ,
Q Какую роль играет Ruby on Rails в вашем бизнесе?
В общей сложности наша команда в настоящее время тратит около 2000 часов в неделю на взаимодействие с Rails и его экосистемой. Это основная среда, из которой мы работаем с нашими клиентами. Это среда, которую мы считаем наиболее эффективной и способной создавать программное обеспечение с помощью надежного набора тестов.
Q Какая ваша любимая часть Ruby / Rails?
В настоящее время я нахожусь в роли, где я проверяю много кода — читая тысячи строк различий в день — и приятно иметь язык, в котором нет много церемоний или лишних токенов. В прошлом году мы разработали руководство по стилю, которое делает просмотр кода более простым и приятным.
В Rails всегда есть ярлык для очистки представления, позволяя ему полимеризовать частичные отрисовки, основываясь на его типе и на основе традиционных структур каталогов. Такие вещи, как HAML и CoffeeScript, еще больше уменьшают беспорядок и помогают упростить код, чтобы точно сосредоточиться на ваших идеях и способах их выражения в веб-приложении.
Сообщество также является огромным преимуществом. Ruby — это очень стабильный 20-летний язык с гигантским сообществом. Библиотеки для управления зависимостями (Bundler), тестирования (RSpec), аутентификации пользователей через OAuth (Omniauth) находятся в отличном состоянии. Rubygems.org — чрезвычайно полезная работа сообщества. Тысячи Rubyists с аккаунтами GitHub вносят свой вклад в гемы. Ruby является вторым по распространенности языком на GitHub.
Q Какую роль Thinkbot сыграл в разработке Ruby on Rails?
Как только вышел GitHub, стало очевидно, что Git и GitHub были превосходным способом обмена кодом.
Прем и Арун появляются в списке участников Rails.
Скрепка и Должа были ранними библиотеками, которые стали довольно популярными в сообществе. Оба были продолжением тестирования и загрузки файлов, которые мы делали раньше. Скрепка была вдохновлена file_column и attachment_fu . Должна быть построена поверх Test::Unit
— аналогично тому, как Sass был построен поверх CSS. Этот процесс улучшения никогда не заканчивается в обществе. Другие большие усилия в традиции прикрепления файлов продолжаются сегодня с CarrierWave и Filepicker.io.
Я помню, как приходил в Rails и изучал тонну, заходя в аккаунт Subversion от Technoweenie . Скрепка и Должа были с открытым исходным кодом на пользовательском экземпляре Subversion на svn.thoughtbot.com.
Как только вышел GitHub, стало очевидно, что Git и GitHub были превосходным способом обмена кодом. Мы переместили наши старые библиотеки на GitHub и продолжили участвовать в других проектах и некоторых наших. Следует, чтобы превратиться в библиотеку, которая прекрасно работает с RSpec. Factory Girl была написана для замены светильников.
Мы добавили тестовых шпионов в форк Mocha, затем в отдельную библиотеку под названием Bourne, которая расширила Mocha, а недавно добавили шпионов в RSpec Mocks . Мы не изобрели метод испытания шпиона (мы рекомендуем каждый читает Patterns XUnit Test), но мы упорно трудились, чтобы привести их в наш рабочий процесс и добавить их к существующим инструментам в обществе, развиваемся как эти инструменты стали лучше и получили сообщество служба поддержки.
Мы написали Clearance (что я лично поддерживаю) после того, как несколько раз вручную написали аутентификацию на основе электронной почты и пароля. Мы завернули его в библиотеку с отличным автоматизированным набором тестов. Теперь это проверенная в бою четырехлетняя библиотека. Подобные вещи мы всегда пытаемся настроить и улучшить, а также ведем блог об этом, чтобы информировать сообщество и видеть, как мы развиваем наши методы.
В Каков ваш процесс разработки веб-приложения? Как это развивалось с тех пор, как вы начали использовать Rails?
Мы описали наш процесс разработки в нашей книге игр и руководствах .
Я воспользовался преимуществами моей оболочки (zsh) и редактора (vim). Я ужесточил свои петли обратной связи, особенно при написании тестов. Я стал более последовательным и дисциплинированным в отношении стиля и потока Git. Я лучше понимаю и использую объектно-ориентированные методы.
Q Что вы думаете о новых выпусках Ruby 2 и Rails 4?
Я думаю, что они великолепны! Я с нетерпением жду улучшения скорости и именованных параметров в Ruby. Я с нетерпением жду дополнительных интеграций с Postgres в Rails 4, таких как типы массивов hstore и database.
У нас пока нет крупных проектов на Rails 4 или Ruby 2. Глядя на историю прошлых выпусков, мы стараемся не прыгать. Мы некоторое время тестировали наши библиотеки с открытым исходным кодом на обеих версиях и сообщали о любых проблемах в обратном направлении, исправляя то, что можем, но ради наших клиентов мы немного более консервативны в применении новейшей технологии.
Q Как вы хотите, чтобы Ruby on Rails развивался в будущем?
В течение долгого времени я обдумывал некоторые базовые решения, которые вы должны сделать как разработчик. В течение нескольких лет у нас был сценарий оболочки размером менее ста строк под названием « Ноутбук», который помогал нам настраивать новые машины и документировать текущую лучшую практику, которую мы знаем. Я все еще думаю, что здесь есть много возможностей для улучшения.
Допустим, вы используете OS X. Возможно, вы хотите использовать Homebrew, но это не стандартный менеджер пакетов для операционной системы. Я бы хотел, чтобы Apple сделала это стандартом. Точно так же установщики Ruby, переключатели Ruby, binstubs Bundler, соглашение о сообществе файлов .ruby-version и прокладки rbenv продолжают развиваться, чтобы управлять различными версиями библиотек, которые вы хотите использовать в разных проектах.
Q Будет ли thinkbot всегда магазином Ruby on Rails?
Маловероятно, что мы сделаем основную замену Ruby как нашему языку на стороне сервера.
Я не знаю! В ближайшем будущем, безусловно, мы сможем достичь многого с помощью Ruby, SQL и JavaScript. Маловероятно, что мы сделаем основную замену Ruby как нашему языку на стороне сервера. Скорее всего, мы будем работать над проектами, использующими сервис-ориентированные архитектуры, и различные сервисы начнут использовать альтернативные платформы и языки, такие как Go .
Я ожидал бы, что мы будем более полиглотными, чем заменим Ruby. За последние несколько лет мы использовали много баз данных, хотя в настоящее время Redis и Postgres могут обрабатывать 99% наших случаев использования.
Я также хотел бы попробовать сделать что-то вроде архитектуры кампании Барака Обамы 2012, которая представляла собой статический HTML / CSS / JS, обслуживаемый Akamai и S3 , с сотнями бэкэнд-API.
В: Какой последний совет для людей, только начинающих работать с Ruby on Rails?
В течение многих лет мы усердно работали над тем, чтобы выложить наш лучший совет на Learn Rails У нас есть «карта следов», специально предназначенная для изучения Rails, и мы курировали ее через Интернет и в нашем собственном магазине. Зайдите туда и вы увидите, какие ресурсы мы рекомендуем использовать в каком порядке. Есть приложение для iPhone, которое поможет вам самостоятельно оценить свои способности и отслеживать ваши успехи в Rails, Git, Postgres, JavaScript-трейлах и других трейлах.
В заключение
Спасибо, Дэн, за то, что уделили время на это интервью, мы очень ценим это.