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