Школа
Веб-разработка

Есть ли смысл учить Ruby on Rails в 2019 году?

Василий, здравствуйте.

Подскажите, есть ли смысл учить Ruby и Ruby on Rails в 2019 году? Цель — веб‑разработка для проектов, похожих на сайт бюро, маркетплейсов вроде catery.ru и подобных.

Если нет, то какие альтернативы будут хорошими для начинающего?

Николай Стебунов
4 июля 2019
👁 12390   🗩3
Веб-разработка

Есть ли смысл учить Ruby on Rails в 2019 году?

Василий, здравствуйте.

Подскажите, есть ли смысл учить Ruby и Ruby on Rails в 2019 году? Цель — веб‑разработка для проектов, похожих на сайт бюро, маркетплейсов вроде catery.ru и подобных.

Если нет, то какие альтернативы будут хорошими для начинающего?

Николай Стебунов
4 июля 2019
👁 12390   🗩3
Василий Половнёв
Технический директор бюро
Полезно
 29
29
Непонятно
 1
1
Войдите в Бюросферу, чтобы голосовать

Николай!

Это зависит от ваших целей и ситуации. Если все ваши друзья программируют на Питоне, учите Джанго: будет кому ревьюить ваш код, быстрее освоите. Если в компании вашей мечты используют Node.js, учите Node.js и Express.js: будет проще устроиться. Но если факторов, склоняющих вас в пользу других фреймворков, нет, я советую начинать с Руби‑на‑рельсах. И у меня на это пять причин.

Рельсы научат базовым вещам

У Руби‑на‑рельсах отличная официальная документация, которая за руку проводит по основным компонентам фреймворка. Разобравшись с нею, вы получите базовые знания об устройстве веб‑фреймворков: как устроен роутинг, как работает веб, зачем фреймворку база данных и как менять её устройство, как использовать шаблоны, как интернационализировать и локализовывать приложения. Если придётся сменить фреймворк, знания пригодятся: и в Рельсах, и в Джанго роутинг — та же функция для сопоставления запроса и кода, который его должен обработать.

Кроме того, из базовой документации вы получите знания о смежных с веб‑разработкой областях: о тестировании, отладке и безопасности. Научитесь правильно и безопасно конфигурировать приложения, отправлять и принимать почту, загружать и хранить файлы в облачные хранилища.

Рельсы научат писать хороший код

В Руби и Рельсах есть всё, чтобы научиться писать аккуратный, поддерживаемый и последовательный код. Начните со стайлгайдов:

Чтобы научиться определять, какой код плох, почему и как это исправлять, изучите Ruby Science и POODR:

Правила, принципы и методы, описанные в этих книгах, фундаментальны. Разберётесь с ними в Руби и Рельсах, будете применять и в других языках программирования.

В Рельсах всё есть

Гем — архив с библиотекой, набором функций, из которых, как из кирпичиков, можно сложить то, что нужно

В Рельсах есть всё, что нужно, чтобы быстро собрать и запустить любое веб‑приложение: ОРМ, миграции, кеширование, отправка и получение почты, вебсокеты, интернационализация, отложенные задачи, АПИ для работы с облачными хранилищами. Если чего‑то нет, для этого есть гемы: нужна аутентификация через почту и соцсети с восстановлением пароля, берите Devise; нужен деплой и откат версий одной кнопкой, берите Capistrano; нужна админка, берите ActiveAdmin.

Гем — архив с библиотекой, набором функций, из которых, как из кирпичиков, можно сложить то, что нужно

Какую бы задачу вы не выбрали для первого проекта на Рельсах, вы быстро получите работающий прототип. Будет, что показать на собеседовании.

Современный фронтенд

См. Webpacker

Рельсы дружат с современной экосистемой фронтенда и поддерживают все модные фреймворки. Если решите заодно попробовать и фронтенд, берите React, Vue или Svelte — всё отлично работает в Рельсах. Не придётся держать фронтенд и бэкенд отдельно. А если решите переписать бэкенд на Го, без проблем извлечёте фронтенд из проекта.

См. Webpacker

Программистское счастье

Это самая субъективная причина начинать программировать на Руби и Рельсах.

Я верю, что программирование ближе к литературе и редактуре, чем к точным наукам. Чем лаконичнее и понятнее код, чем он ближе к естественному, а не формальному языку, тем легче и приятнее с ним работать: люди пишут код для людей.

Руби очень лаконичный и выразительный язык. Ясно выражать на нём собственные мысли мне проще, чем на других языках программирования. Например, чтобы вывести на экран 5 раз «Ура» в Яваскрипте придётся использовать цикл for или forEach:

for (var i = 0; i < 5; i++) {
  console.log('Ура')
}

[1, 2, 3, 4, 5].forEach(() => console.log('Ура'))

А в Руби — написать, как думаю, 5 times print «Ура»:

5.times { print "Ура" }

Когда я начинал изучать Руби и Рельсы, они настолько понравились мне, что я, как в детстве, не мог дождаться утра, чтобы поскорее запрограммировать на Рельсах что‑нибудь ещё. И до сих пор, просыпаясь по утрам, я счастлив, что сегодня попрограммирую на Руби.

Надеюсь, и вас Руби и Рельсы сделают счастливым.

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Полезно
 29
29
Непонятно
 1
1
Войдите в Бюросферу, чтобы голосовать
Отправить
Поделиться
Поделиться
Запинить
Твитнуть

Комментарии

Дмитрий Марков

JavaScript тоже продвинулся в лаконичности: 'Ура'.repeat(5)

Мне не очень нравится тема про итератор times.

Во‑первых, ничто не мешает писать такие штуки самому, если нужно:
Number.prototype.times = function() ...
Думаю, у типичного матёрого разработчика полно такого синтаксического сахара.

Во‑вторых, тут непонятно, что мерить. Цикл на ассемблере тоже лаконичен:
MOV CL, 5
L1:
DEC CL
JNZ L1
Вот только ни фига не понятно. Когда видишь for, foreach или while, то сразу понимаешь, что сейчас будет цикл. А когда видишь 5.times, то это тот же MOV CL, 5, потому что не сразу врубаешься, что это вообще значит. Даже если интуитивно понятно, то полезешь в доку уточнить.

Я очень люблю синтаксический сахар, но он помогает быстрее писать код, а не понимать программирование. Не думаю, что задача разработчика — писать много кода. Наоборот, меньше кода — лучше. И дело тут не в количестве инструкций и символах, а в количестве программируемой логики.

Андрей Никифоров

Рельсы учить стоит. Легко войти, много работы, большое сообщество разработчиков.

Говоря о программистском счастье, для меня было счастьем открыть для себя Эликсир и Феникс. Для меня это как следующая ступень развития Руби и Рельс: всё очень знакомо, но лучше реализовано архитектурно.

Конечно, особые конструкции Эликсира — например, абстракции списков и пайпы — сперва требуют некоторого привыкания, а потом их не хватает в Руби. С другой стороны, вебсокеты и вообще реалтайм‑взаимодействие клиента с сервером очень изящно ложится на архитектуру Эликсира. В Рельсах подобные нативные средства появились полноценно только в пятой версии.

Цель рубрики — обсуждение вопросов дизайна, веб-разработки, переговоров, редактуры и управления.
Комментарии модерируются. Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры.

Рекомендуем другие советы