...

суббота, 2 ноября 2013 г.

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

Свою первую программу я писал для интерпретатора 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-ы, какие знаете.


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


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий