Как сразу стать «крутым» rails-разработчиком. Cоздание веб-приложения

в 12:02, , рубрики: continuous integration, framework, integration testing, puppet, rails, ruby on rails, rvm, vagrant, автоматизация рутины, администрирование, Веб-разработка, метки: , , , , , , , , ,

Свою первую программу я писал для интерпретатора Basic. Он запускался при включении машины, а после ввода программу можно было выполнить командой RUN.

Многое изменилось с тех пор. Мы говорим о стеках технологий и целых экосистемах в IT. За выполнение каждой прихоти программиста конкурируют несколько систем/библиотек/расширений/модулей/сервис. А выбрать среди них порой так же сложно, как написать свой велосипед.

К психиатру пришел человек с жалобой на невроз.
— А кем же вы работаете? — интересуется доктор.
— Сортировщиком апельсинов на овощной базе. Передо мной желоб, по которому катятся апельсины. Крупные я должен класть в один ящик, а мелкие — в другой.
— Что же нервного в такой работе?
— Как что? Я целый день должен принимать решения, решения, решения.

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

Итак, для создания rails-приложения нам понадобятся

MacBook Air

В любом случае, без компьютера не обойтись. Не выбирайте долго, иначе не продвинетесь дальше.
Альтернативы: MacBook Pro, iMac, PC.

OS X

При правильном выполнении предыдущего пункта она у вас уже есть. Пока не так уж сложно, да?
Альтернативы: Ubuntu, Debian, Gentoo, Suse и т.д.

RubyMine

Профессиональнее всего вы будете выглядеть, работая в большой IDE. Это то, о чем стоит позаботиться сразу.
Альтернативы: SublimeText, Vim, TextMate.

SequelPro

Красивая программа для управления БД, к сожалению только для MySQL, так что вам понадобится несколько для разных СУБД.
Альтернативы: Navicat, pgAdmin, Tuples, MongoHub и т.д.

Homebrew и homebrew-cask

Нам очевидно понадобится установить еще несколько программ. Скачивать .dmg это путь домохозяйки, а не веб-разработчика. В 21 веке все продвинутые люди пользуются менеджерами пакетов и репозиториями.
Альтернативы: apt, portage и т.д.

Zsh и Oh-my-zsh

Вы всегда чувствуете себя круто, работая в консоли. Но чтобы произвести впечатление на менее продвинутых коллег, лучше установить самый мощный shell и фреймворк для управления его конфигами и плагинами.
Альтернативы: bash, csh

Git

Наверно уже нельзя и представить себе жизнь программиста без системы контроля версий. Вы тоже не можете?
Альтернативы: mercurial, svn

GitHub

Отличное место для хранения вашего git-репозитория. А еще говорят, что его любят работодатели.
Альтернативы: bitbucket, sourceforge

Tower

У вас будет возможность управлять репозиторием из консоли или из IDE, но эти GUI-клиенты такие симпотичные.
Альтернативы: Github for mac, SourceTree, и т.д.

VirtualBox

Ну ладно. Вы же не подумали, что можно просто установить все необходимое в систему? Что если понадобится заново развернуть окружение на новом компьютере? Или настроить идентичное на нескольких? MAMP и XAMP тут не подходят, вот что я скажу. Нам нужна виртуальная машина в режиме headless.
Альтернативы: VMware, Parallels

Vagrant

Вручную устанавливать гостевую ОС, настраивать ее, пробрасывать порты… Вы что, смеетесь? Это тоже должно быть автоматизировано.
Альтернативы: boxgrinder

Puppet

Отлично, вот мы запускаем свой виртуальный сервер командой vagrant up и подключаемся командой vagrant ssh. Но внутри еще предстоит много всего установить и настроить. Автоматизируем это. Программист должен любить автоматизацию.
Альтернативы: chef-solo, ansible

Librarian-puppet

Знаете, манифесты puppet иногда долго писать. Это похоже на велосипеды, а мы тут не пишем велосипедов. При помощи puppet-librarian автоматизируем установку модулей, которые автоматизируют установку всего остального.

Ruby

Хорошо, что я пишу статью для rails-разработчика, избавляет от выбора языка и фреймворка. Но из разных реализаций вам нужен последний стабильный MRI ruby.
Альтернативы: jruby, ree, rubinius

RubyGems и bundler

Все, что я говорил про изобилие модулей и расширений ­– отлично демонстрируют RubyGems. Еще один незаменимый менеджер пакетов.

RVM

Этот шаг не должен вызывать удивления. Версии ruby могут быть нужны разные и с разными наборами gem­-ов. Соответственно между ними нужно переключаться и все такое. Работа для Ruby Version Manager.
Альтернативы: rbenv

Rails Composer

Подойдя к созданию веб-приложения мы немного устали, а предстоит еще столько всего выбрать. Давайте позволим генератору Rails Composer спросить, чего мы хотим и установить это. Так проще ничего не забыть.

Выберем следующее (добавил несколько пунктов, которые необходимо будет установить дополнительно)

Pow и Powder

Веб-сервер для development.
Альтернативы: webrick, thin, unicorn, puma

Unicorn

Веб-сервер для production.
Альтернативы: thin, puma

PostgreSQL

СУБД для development.
Альтернативы: SQLite, MySQL, MongoDB и т.д.

Haml

Шаблонизатор.
Альтернативы: erb, slim

Sass и Compass

Препроцессор CSS.
Альтернативы: Less.

Rspec

Unit-тестирование.
Альтернативы: Test::Unit, MiniTest, cucumber

RSpeс with Capybara

Интеграционное тестирование.
Альтернативы: Cucumber, Turnip, MiniTest

Poltergeist + Konacha

Тестирование Javascript.

Guard

Непрерывное тестирование

FactoryGirl

Замена для fixtures.
Альтернативы: Machinist, Fabrication

Bootstrap

Front-end framework.
Альтернативы: Foundation, Skeleton, Kickstrap

Devise

Аутентификация.
Альтернативы: OmniAuth и т.д.

CanCan и Rolify

Авторизация.
Альтернативы: Authority

SimpleForm

Помошник в создании форм.
Альтернативы: Formastic и т.д.

Наконец добавьте QuietAssets, BetterErrors, ProxyLocal и все полезные gem-ы, какие знаете.

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

Вы даже могли бы начать программировать, но постойте. Впереди долгий процесс работы над тем_что_вы_там_собрались_разрабатывать. Будет ли процесс поставлен профессионально? Вполне возможно, что тут не обойтись без полноценной системы непрерывной интеграции. Но это тема для другой статьи. А в комментариях этой к можно дополнить список полезных технологий, облегчающих жизнь “ленивым” программистам.

Автор: binary1101

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js