курсы, книги, видеогайды, подкасты и блоги
Сфера применения и преимущества
Ruby on Rails (RoR) – фреймворк для веб-разработки, который называют главной причиной успеха самого Ruby. Применять Ruby можно везде, где требуется быстро создать проект с хорошими мощностями для работы и иметь возможность масштабировать его без лишнего напряжения.
Где изучать Ruby и Ruby on Rails в 2021 году?
Учебные материалы доступны в любой форме: аудио, видео, блоги и сайты, курсы онлайн-университетов или книги. Начнём с классики, т.е. с образовательных онлайн-платформ.
Курсы
Популярные онлайн-площадки реализуют принцип “отдал деньги и не паришься”. Они предлагают студентам комплексные программы обучения, занятия с преподавателями-кураторами, готовые советы и дипломы/сертификаты после завершения курса. Как правило за такие курсы придется отдать некоторую сумму денег, но можно найти и бесплатные варианты с кучей ограничений.
- Udemy. Англоязычный онлайн-университет с огромным выбором курсов. Например, этот предлагает слушателям подборку лекций и шесть веб-приложений в портфолио. Есть курсы по созданию конкретного проекта, например, интернет-магазина.
- Codecademy. Англоязычный онлайн-университет с возможностью подписки Pro. За 10 часов обучения студентам предлагается освоить язык Ruby и фреймворком Ruby on Rails в процессе создания восьми веб-приложений. Без Pro-подписки доступна теория и краткая практика, а платный вариант предполагает доступ к дополнительной аналитике и отдельному чату с подписчиками, а также эксклюзивные курсы и полностью готовые проекты для портфолио.
- GeekBrains. Российская образовательная онлайн-платформа предлагает обучение на факультете Ruby on Rails. Обещают только качественные знания, присмотр опытных кураторов и диплом после успешного завершения курса. В процессе обучения студенты создают собственные репозитории на GitHub с рабочими проектами для портфолио. Онлайн-площадка помогает выпускникам с трудоустройством.
- Thinknetica. Русскоязычный онлайн-университет предлагает собственную платформу для изучения и обещает сосредоточиться на практических навыках.
- Gorails. Посвящённый Ruby on Rails сайт открыл бесплатный обучающий курс, где требуется знание не только Ruby, но и CSS/Javascript. Есть и отдельные платные курсы. Обучение ведётся в формате видеогайдов, сертификаты не выдаются.
- Хекслет. Русскоязычный онлайн-университет. Вместо сертификатов предлагаю собственные баллы сайта, демонстрирующие общий уровень знаний студента. Обучение строится на видеоуроках с выполнением тестов.
- RailsGuides. Не совсем онлайн-университет, но сборник разнообразных гайдов по Ruby on Rails. Большая библиотека под разные версии фреймворка, есть даже возможность самостоятельно поучаствовать в разработке гайдов.
- На habr есть неплохой план обучения со ссылками на используемые ресурсы.
Книги
Если вас не устраивают курсы, всегда можно учиться по книгам. По Ruby и Ruby on Rails их написано довольно много, но хороший русский перевод есть не всегда.
- Документация. В официальной документации фиксируются все изменения и есть все описания доступных функций и библиотек. Её можно назвать чистейшим способом изучения: никаких авторских отступлений или эмоциональных дополнений, только описания способов применения. Есть документация на английском.
- Agile Web Development with Rails 5. Одна из главных книг по Ruby on Rails. Единственный минус сейчас – книга по пятой версии не учитывает особенностей актуального релиза фреймворка. Для ознакомления и наработки теоретической базы она великолепна, но придётся выучить английский.
- Ruby Best Practices. Сборник лучших практик внутри Ruby. Для новичков эта книга не годится, но для улучшения навыков владения языком она подойдёт идеально.
- Ruby on Rails для начинающих. Майкл Хартл. Есть электронный вариант на английском языке. Книга с нуля рассказывает и показывает возможности Ruby вместе с Rails.
- Ruby. ООП. Сэнди Метц. Использование Ruby и Rails с парадигмой ООП. С примерами и отличными описаниями концепций языка программирования. В русской версии есть неточности перевода, поэтому лучше читать в оригинале.
Видеогайды
Формат обучения по видеогайдам набирает популярность, и тут на помощь приходит Youtube с огромным количеством роликов на любые темы:
- Полный курс по изучению RoR на английском языке. Вкратце рассказывают все основные возможности языка и фреймворка. Отдельно упоминают работу с GitHub и Heroku. В описании есть удобная навигация через таймкоды.
- Краткий курс по RoR на один час. Ещё короче, чем предыдущий, ещё более сжато преподносится информация, но и времени на просмотр требуется меньше. Навигации нет, поэтому придётся помучиться с переключением на разные места. На английском языке.
- Русскоязычный курс по RoR с самого начала. Это разбитый на главы плейлист. Он, конечно, древний (2015 г.), но для понимания основ его более чем хватит.
Сопутствующие источники информации
Для обучения лучше всего использовать все возможные варианты получения информации.
Подкасты
Современным фреймворкам – современные способы получения информации. Подкасты как раз помогут понять возможности от лица действующих разработчиков.
- RoR Podcast. Еженедельный подкаст о новинках в среде от Бриттани Мартин.
- The Ruby Rogues. Еженедельный подкаст действующих разработчиков. Здесь обсуждается всё: от новинок в программировании до влияния RoR на жизнь и карьеру.
- Remote Ruby. Еженедельный подкаст во время которого ведущие Крис Оливер и Джейсов Чарнес обсуждают друг с другом Ruby и часто приглашают в гости других разработчиков.
- Drifting Ruby. Это не совсем обычный ежемесячный подкаст – здесь каждый эпизод посвящён конкретной технике, поэтому больше ориентирован не на обучение с нуля, а на изучение одной из возможностей фреймворка. Максимальную пользу получат разработчики среднего уровня, но и новички, а также профи тоже смогут узнать что-то новое.
- GoRails. Ежемесячный подкаст одноимённого сайта. Получается неплохая экосистема: на сайте есть видео и теория, на машине учащегося – практика, а подкаст позволит взглянуть на это всё под другим углом.
Блоги
Подкасты можно назвать голосовой версией блога, хотя и в самих блогах никто не мешает использовать и подкасты, и видео, и текст.
- RoR Blog. Официальный блог разработчиков Rails. Покрывает почти все концепции RoR, постоянно публикуются новости с появившимися возможностями фреймворка и/или языка программирования Ruby.
- Reddit с сабреддитом для Ruby. Регулярные обсуждения как различных общих вопросов, так и конкретных “точек с запятой” в новой версии языка. Большое комьюнити позволит получить реакцию на пост в кратчайшие сроки.
- Ruby Inside. Блог британского разработчика не только о Ruby, но и обо всём, что с ним связано.
- Drifting Ruby Blog. От создателей подкаста Drifting Ruby: хорошая коллекция обучающих материалов и разборов концепций фреймворка и ЯП.
Заключение
Ruby был разработан в первую очередь для лёгкого освоения и быстрого вовлечения в работу. Rails полностью поддерживает этот подход, так что его изучение не потребует серьёзного перенапряжения. К тому же язык и фреймворк активно разрабатываются, что даёт им серьёзные перспективы – программисты могут не бояться отсутствия работы через несколько лет. Лёгкость вовлечения только поддержит энтузиазм новичков. Удачи в обучении!
***
Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?
- Основы программирования на Python.
- Профессия Python-разработчик.
- Алгоритмы и структуры данных.
- Математика для Data Science.
- Профессия Data Science.
- Frontend Basic: принцип работы современного веба.
- Профессия Фронтенд-разработчик.
- Обработка естественного языка. Полный курс.
На подходе еще больше 10 курсов для взрослых и детей.
Интересно, хочу посмотреть
Ruby для начинающих: чем интересен этот язык и как его эффективно изучать
Меня зовут Иван Бондаренко, я Senior Software Engineer и Ruby Technical Lead в CHI Software. Опыт разработки — 6 лет, из них последние 5 — я работаю с Ruby. До этого я программировал 1 год на PHP. Имея за плечами опыт преподавания (я вел курсы по Ruby в Spalah), я решил максимально доступно рассказать об этом языке программирования, поделиться опытом с начинающими специалистами и, возможно, заинтересовать кого-то из них Ruby.
Это первая из статей, в которых я расскажу об особенностях Ruby и Ruby on Rails и поделюсь советами о том, с чего начать в изучении Ruby, где находить ответы на вопросы, как получить нужный опыт и чем вы сможете выгодно отличаться от других кандидатов. Буду рад, если мои советы помогут кому-то определиться со специализацией и выбрать Ruby для изучения и работы.
Основные особенности и отличия Ruby
Часто слышу вопрос: стоит ли учить Ruby? Как правило, вопрос основан на сомнениях: насколько легко найти работу с данной специализацией, будут ли интересные проекты и так далее и тому подобное. Ruby — современный, постоянно развивающийся язык программирования, областей применения ему — масса. Наверняка вы слышали про Chef, Vagrant, Homebrew, но чаще всего все мы слышим о Rails. Вот пост с комментарием самого автора фреймворка о том, почему стоит учить Rails.
Конечно, каждый сам для себя решает, какой инструмент ему использовать. И нет смысла бесконечно долго спорить о том, почему одна технология лучше другой. Я выбрал Ruby, потому что это невероятно выразительный и гибкий язык, который позволяет одну и ту же задачу решить многими способами.
Ruby — интерпретируемый, полностью объектно-ориентированный язык программирования с четкой динамической типизацией. Он сочетает в себе Perl-подобный синтаксис с объектно-ориентированным подходом. Также некоторые черты заимствованы из языков программирования Python, Lisp, Dylan и CLU. Кроссплатформенная реализация интерпретатора языка Ruby распространяется на условиях открытого программного обеспечения. Код, написанный на Ruby, может быть понятен даже человеку, который не разбирается в программировании. На RoR были созданы такие проекты, как Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb и другие.
С ростом Node.js популярность Ruby on Rails несколько уменьшилась, но технологические стартапы часто используют RoR благодаря простоте прототипирования. Ruby — 11-й самый популярный язык в индексе TIOBE.
Преимущества Ruby
- Многочисленное и доброжелательное комьюнити.
- Довольно высокий порог входа, что означает, что Ruby-разработчик с большой вероятностью имеет опыт работы как минимум с еще одним языком программирования.
- Вы используете только те библиотеки и модули, которые необходимы.
- Существует большое количество полезных библиотек, которые уже готовы к использованию (Ruby Gems).
- В интернете есть много информации по Ruby, в структурированном и отсеянном виде.
- В контексте обсуждения Ruby нельзя не упомянуть популярнейший фреймворк Ruby on Rails.
А теперь поговорим о некоторых преимуществах Ruby более подробно.
Скорость разработки
Одним из плюсов Ruby и фреймворка RoR считается скорость разработки. Личный опыт и опыт коллег показывает, что решение задач на Rails происходит в полтора раза быстрее по сравнению с другими фреймворками подобного плана. Ruby очень прост как инструмент, а также существует огромное количество готовых решений для различного рода задач.
Штатные средства кеширования данных
При разработке масштабного проекта одним из самых важных моментов является кеширование. Ruby on Rails в основной комплектации имеет штатные средства кеширования данных. То есть у вас сразу будут в наличии инструменты для кеширования данных на проекте, и вы можете легко кешировать отдельные блоки кода или даже целые страницы.
Вначале тесты, потом код
Часто в процессе разработки крупных проектов возникает вопрос о тестировании, и не редкость, когда нет дополнительных средств на отдельную команду тестировщиков. В Rails есть решение и этой проблемы. Если сравнивать RoR с другими фреймворками в контексте тестирования приложения, то вы найдете массу готовых решений для любого вида тестов, будь то интеграционные или юнит. Все эти библиотеки работают «из коробки». В идеале в проекте на Ruby on Rails код не пишется до тех пор, пока под него не написаны тесты. RoR идеология предполагает изначальное использование методов BDD (Behavior Driven Development) или TDD (Test Driven Development).
Общепринятые стандарты процесса разработки у Ruby-разработчиков
Говоря о преимуществах Ruby, я не могу снова не упомянуть сообщество рубистов. Оно постоянно растет, развивается и всегда готово прийти на помощь. Всегда есть кто-то, кто подскажет, как лучше решить проблему, поделится опытом в каком-либо вопросе.
Также очень важный момент — в Ruby-сообществе уже много лет есть стандарты процесса разработки, некие правила/соглашения сообщества, по которым ведется разработка, что очень сильно упрощает работу. За счет этих стандартов каждый проект очень структурируется, соответственно, новый разработчик в команде быстро войдет в курс дела и уже с первых дней работы сможет быть полезен. И даже больше: если проект начинала одна команда, а заканчивает другая — это тоже совсем не проблема. Поскольку разработка ведется по уже упомянутым правилам и соглашениям сообщества, новая команда быстро и без трудностей вникнет в проект и успешно его закончит без особых потерь времени.
Также в Ruby on rails есть большое количество самых разных готовых решений в открытом доступе. Большинство решений уже были реализованы кем-то до вас, а также протестированы сообществом, что уменьшает необходимость разработки с нуля. Это могут быть системы аутентификации, авторизации, комментирования, системы платежей, почтовые рассылки и так далее.
Готовые решения для многоязычности проекта
Rails в базовой комплектации имеет очень мощные средства для локализации проекта. Есть возможность как предусмотреть поддержку нескольких языков изначально, так и осуществить её позже. В проекте присутствуют специальные файлы для переводов терминов, инструменты для отображения шаблонов на разных языках и многое другое.
Высокий уровень защиты данных
Сейчас нередко в сети публикуются статьи о взломах различных ресурсов. Разработчики фреймворка Ruby on Rails очень серьезно отнеслись к проблеме защиты данных. В RoR изначально присутствует шифрование паролей, данных кредитных карт и других личных данных пользователя, также исключены SQL инъекции и XSS атаки. Все входные параметры экранируются по умолчанию.
Изучение Ruby
А теперь поговорим, как именно можно освоить Ruby.
Теория
Начать следует, конечно же, с литературы. Я рекомендую эти источники:
- Ruby за 20 минут — хороший ресурс для совсем начинающих. Позволяет меньше, чем за полчаса ознакомиться с основными конструкциями языка и начать писать свои небольшие программы.
- Codecademy — платформа с онлайн-курсами по множеству направлений, включая чистый Ruby и Rails. Здесь довольно интересно построен обучающий процесс, дается теоретический материал и сразу же практическое задание, чтобы его закрепить. Финальные задания платные, но и без них можно получить нужные навыки.
- Материалы по Ruby и Rails — сборник ссылок на различные сайты и книги, посвященные изучению Ruby и Rails.
- Отдельно могу посоветовать книгу Flanagan D., Matsumoto Y. «The Ruby Programming Language». Она считается одной из лучших, её автор — сам создатель языка Ruby.
- Google 🙂
Далее я рекомендую изучить хотя бы базовые понятия SQL, потому что СУБД хоть и отличаются между собой, но зачастую используют один и тот же язык.
Вот парочка ресурсов, с которых можно начать:
- w3schools.com/sql — здесь можно почитать, попробовать и проверить свои знания по SQL.
- quizful.net/test — тут можно найти вопросы, которые часто задают на собеседованиях.
Английский
Я считаю, что нет смысла останавливаться подробно на этом моменте, так как это — тема отдельной статьи. Английский очень важен, и это общеизвестный факт. Хотелось бы только упомянуть вкратце два самых важных момента.
Во-первых, английский — это основной язык международного комьюнити, соответственно, большая часть полезной литературы тоже будет на английском, многие новости, доклады и важные статьи тоже будут появляться сначала на английском. Если вы хотите узнать ответ на какой-либо вопрос — очень большая вероятность, что в первую очередь его получится найти именно на английском.
Во-вторых, чем лучше ваши знания английского, тем больше шансов найти работу. Большинство клиентов зарубежные, соответственно, знание английского важно для продуктивного общения, четкого понимания ТЗ и хорошего контакта с клиентом.
Практика
После изучения нескольких ресурсов стоит перейти к более важной части, а именно к практике. Примеров заданий с интернет-магазином или простым блогом в сети масса (вот один из них), особенно если говорить о Rails. В ходе выполнения задач, уже немного приближенным к реальным, вы точно столкнетесь с какими-то проблемами и тогда перейдете к тренировке одного из самых главных качеств — это умение гуглить. К сожалению, мне не удалось найти какой-то туториал или курсы, посвященные этому навыку, но он определенно играет очень важную в роль в повседневной работе.
Курсы
После прочтения теории и написания нескольких «пет-проектов» можно, конечно, пробовать идти по собеседованиям, но часто бывает, что этих знаний недостаточно. Это связано с большим наплывом кандидатов, и, учитывая конкуренцию, каждый старается выделиться и как можно лучше подготовиться.
Еще один важный пункт в обучении, который может стать перевесом в вашу сторону при поиске работы, — это курсы по программированию. Если, конечно, у вас нет ментора, который готов тратить определенное количество времени на то, чтобы придумывать задания и делать по ним ревью.
Сразу скажу, что я ни в коем случае не рекомендую идти на курсы, не имея уже какого-то багажа знаний. Я рассматриваю курсы как отличный способ закрепить знания, полученные в процессе самообучения. И сейчас не пытаюсь рекламировать какую-то конкретную школу, а объясню, какую именно пользу можно из этого извлечь:
С высокой долей вероятности там вы узнаете то, чего не знали раньше. На курсах довольно большой объем материала, который подается в структурированной форме, что позволяет лучше усваивать материал.
На период курса у вас будет ментор, который будет делать ревью решения ваших задач и указывать на слабые места и ошибки.
Обратная связь. На уроке вы можете задать интересующий вопрос преподавателю или однокурсникам или просто поделиться опытом. Конечно, то же самое можно сделать и на конференции или митапе, но в отличие от посещения конференций, на курсах у вас будет возможность делать это чаще (обычно курсы проводятся 2-3 раза в неделю).
Мотивация. Это в первую очередь для тех, кому нужна помощь с самодисциплиной. Порой довольно трудно заставить себя что-то делать, какие бы перспективы не маячили на горизонте. При посещении курсов у вас будет четкий график, которому нужно следовать, и задания, которые нужно выполнять, иначе вас исключат. Финансовая мотивация также играет здесь роль, в случае платных курсов. Ведь когда отдаешь свои кровные, то уже совсем по-другому относишься к делу, и мысли просто прогулять возникают намного реже.
Еще одно преимущество — сертификат. Понятное дело, что в итоге вас будут оценивать по знаниям, а не по наличию бумажек в резюме. Но тем не менее это будет плюсом, особенно, если будет кандидат с похожим уровнем знаний, но без их документального подтверждения.
Плюс один проект на GitHub в вашу копилку. Если вы начинающий разработчик, то вероятнее всего проект, написанный на курсах, будет интереснее с точки зрения технологий, чем те, которые были написаны ранее.
И самое главное — трудоустройство. Говоря о курсах, я не имею ввиду только те, за которые нужно платить деньги. Часто компании сами проводят набор на обучение, чтобы потом лучших взять к себе на работу. Это могут быть внутренние курсы или стажировка/интернатура. Такой вариант — наилучший, так как вам не нужно ни за что платить, вы получаете опыт и все выше перечисленные плюсы и вдобавок — реальную перспективу трудоустройства. Попасть на них сложнее, но перспективы значимее.
Итого
Ruby — это язык, который позволяет работать без большого количества неудобств и церемоний, которые приходят со строго типизированными языками. С Ruby легко начать работать, особенно если у вас уже есть опыт разработки на других языках программирования, и вы сможете быстро создавать прототипы с Ruby on Rails. В Японии, откуда он появился, Ruby использовался для создания игр. Ruby лаконичен и читается как английский, что делает код понятным для новичков.
Что касается изучения Ruby, хочу еще раз повторить: нужно начать с малого. Прочитайте несколько книг, сделайте самостоятельно несколько заданий, а затем, если чувствуете необходимость получить больше знаний и опыта или дополнительную мотивацию — можно идти на курсы, уже имея определенный багаж знаний, полученных самостоятельно.
В идеале это курсы от какой-либо компании, которая по окончании сделает вам оффер, если хорошо себя проявите. Альтернативный вариант — платные курсы, которые помогут закрепить полученные знания, добавить в резюме еще один проект и набраться опыта, что наиболее важно на старте. Но не стоит ожидать, что по окончании платных курсов вы с легкостью пройдете собеседование, показав сертификат. Оценивать в любом случае будут знания.
В то же время, имея достаточно мотивации, терпения, способностей и опыта с другими языками программирования, вы вполне можете освоить Ruby самостоятельно, т. к. в интернете очень много полезной и хорошо структурированной информации. Также благодаря открытому и многочисленному Ruby-комьюнити можно с легкостью найти онлайн ответы на многие возможные вопросы, которые с большой долей вероятности кто-то уже задавал до вас.
Удачи в изучении! А в следующей статье мы поговорим о коде.
Подписывайтесь на наш Telegram-канал для джуниоров, чтобы не пропустить интересные вакансии, стажировки, курсы, статьи.
Теми: junior, Ruby, кар’єра, програмування
Создание Ruby on Rails с нуля
- День 1: От ничего к чему-то
- День 2: Еще немного об отношениях, тестах и т. д.
- День 3: Мои мысли о Ruby
Я недавно сменил работу, поэтому мне понадобится некоторое время, чтобы освоить архитектуру и услуги новой организации. Тем не менее, чтобы практиковать свой английский и делать заметки, я по-прежнему буду стараться публиковать как можно чаще раз в неделю, но содержание будет отличаться от прошлого, от введения в архитектуру программного обеспечения до моего опыта изучения Ruby.
Потому что языком программирования, используемым на моей новой работе, является Ruby, а до этого у меня не было опыта работы с Ruby. Поэтому в этой серии статей основное внимание будет уделено точке зрения того, кто уже знает несколько языков, и тому, как быстро начать работу с Ruby on Rails, не для того, чтобы написать идеальный Ruby, а для того, чтобы иметь возможность быстро создать работоспособное приложение. Кстати, это немного похоже на то, как я выучил английский, здесь нет никакой структуры, это просто работает, и в любом случае с ним можно общаться.
Монтаж
Мой рабочий компьютер — MacPro M1, поэтому все операции будут выполняться на базе Mac. M1 также является очень важным ключевым словом, и я наткнулся на несколько ловушек на M1, которые будут описаны в следующей статье.
Поскольку мне нужно установить много версий Ruby, я использую решение, аналогичное nvm
, rvm
.
Чтобы установить rvm на Mac, сначала нужно установить gnupg.
$ варить установить gnupg
Тогда просто следуйте инструкциям на официальном сайте.
$ gpg —recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -sSL https://get.rvm.io | bash
$ rvm установить 2.7
$ rvm 2.7 —по умолчанию
Наконец, просто установите Rails. Я знаю, что уже доступны более новые версии Rails, но имеющиеся у меня ресурсы основаны на 5.x
, поэтому я решил установить 5.2.8
.
$ gem install rails -v 5.2.8
Начните создавать приложение Rails
Сначала позвольте мне описать мою цель. Я хочу создать простой веб-магазин с двумя объектами, пользователем и магазином, где отношения между этими двумя объектами представляют собой сопоставление один к одному. Кроме того, использование MongoDB вместо встроенного SQLite.
Создание приложения Rails может быть легко выполнено с помощью scaffold
, который предоставляет полностью основанный на ресурсах стандартный RESTful API.
Начните с создания проекта.
$ rails new hello_rails
$ cd hello_rails
$ bin/rails server
На данный момент приложение создано и работает на порту 3000. Подключитесь напрямую к http://localhost:3000
и вы увидите страницу приветствия.
Далее мы создаем первую модель, начиная с имени и фамилии пользователя.
$ bin/rails generate scaffold Имя пользователя last_name
$ bin/rails db:migrate
Модель пользователя уже создана, и если вы подключаетесь напрямую к http://localhost:3000/users
вы обнаружите, что создан не только API, но и базовый пользовательский интерфейс.
Мы еще не написали ни строчки кода!
Создавайте новые маршруты
Поскольку у нас уже есть базовый API, я хотел бы сгенерировать несколько новых маршрутов API. Давайте возьмем в качестве примера маршруты, не основанные на ресурсах, и маршруты, основанные на ресурсах.
Во-первых, нересурсный маршрут. Я хочу создать функцию подсчета пользователей, поэтому мне нужно /users/count
. Я прикреплю конкретный процесс непосредственно к коммиту Github.
Вообще говоря, нам нужно изменить config/routes.rb
и создать счетчик соответствующего контроллера и представления.
Далее маршрутизация на основе ресурсов, концепция аналогична, также прикреплена ссылка на коммит.
Единственная разница между ними заключается в config/routes.rb
, где маршруты, не основанные на ресурсах, строятся поверх коллекции
, а маршруты на основе ресурсов строятся на элементе
.
Создать новые поля
Теперь у нас есть два поля в пользовательской модели, first_name и last_name, и мы добавим дополнительные поля, такие как пол и возраст, и мы добавим некоторые ограничения для каждого поля.
Например, поля first_name и last_name должны присутствовать и не могут быть пустыми. И пол должен быть один из мужского, женского или другого. Наконец, возраст должен быть натуральным числом.
Давайте начнем с добавления поля «пол», т.е. Github commit.
Самое важное изменение в app/models/user.rb
. В дополнение к новым полям мы также добавляем ограничения существующих полей. Конечно, не забудьте запустить миграцию после изменения модели.
$ bin/rails БД: миграция
Как видите, добавить возраст так же просто, как зафиксировать Github.
От SQLite к MongoDB
Мы реализовали пользовательскую модель в SQLite, но SQLite является локальной базой данных и не может использоваться для распределенных систем. Поэтому мы примем автономную базу данных и будем использовать более гибкую в плане схемы MongoDB для последующей разработки.
Весь процесс миграции следует официальной документации.
Я также прикрепляю полный коммит Github.
Сначала перепишите модель, удалив ApplicationRecord
и добавив Mongoid с его полями. Далее полностью удаляем все места, где в исходном коде используются active_record
и active_storage
(что не так много).
Послесловие
Должно выйти еще несколько статей о расширении этого приложения, которое является моим первым шагом в Rails.
Раньше я сталкивался со многими различными языками бэкенда, включая Python, Golang и Node, но ни один из них не был так дружелюбен, как Ruby on Rails.
Из этой статьи легко понять, что создать «стандартный» RESTful API с помощью Rails очень просто, и если у вас нет особых потребностей, вам даже не нужно писать ни строчки кода.
Зачем подчеркивать стандартные API RESTful?
На самом деле, API, которые я написал в прошлом, не настолько RESTful, как ${resource}/${id}
, а затем предоставить операции GET, POST и DELETE, такую строгую маршрутизацию, если она не генерируется самой структурой, я полагаю, что мало кто будет полностью ей следовать.
Но Rails предоставляет простой скаффолд
, чтобы упростить задачу, и даже встроены модульные тесты, как описано в следующей статье.
Несмотря на то, что мне потребовалось несколько дней, чтобы ознакомиться с Ruby и Rails, все еще требуется некоторое время, чтобы все усвоить и организовать, поэтому позвольте мне потратить несколько недель, чтобы закончить свои мысли о Ruby. Но я должен сказать, что Rails мне нравится. Я везде вижу гениальные идеи, и в них много дизайнерских паттернов. Хотя изучение нового языка и фреймворка было немного болезненным, я все же получил от этого некоторые идеи.
Перестройка Rails — Понимание Rails путем создания Ruby Web Framework
Перестройка Rails — Понимание Rails путем создания Ruby Web FrameworkЧто эксперт по Rails знает об отладке, чего не знаете вы?
Вы часами искали документацию по API в Интернете. Это исключение по-прежнему не имеет смысла. Эксперт знал бы, что делать, но вы все еще сидите там…
Я хочу стать экспертом по RailsКак настоящему эксперту изучить Rails?
‘Самое волшебное свойство Rails заключается в том, что когда я впервые посмотрел на него, я понял, как оно работает, потому что я уже очень хорошо знал Ruby.
Я видел все приемы метапрограммирования; они были почти прозрачными, глядя на это. Но я не знал, что можно собрать все таким образом и создать что-то настолько выразительное и лаконичное».
— Чад Фаулер, серия 1 The Ruby Hangout (0:41:48)Эксперт не срезает углы. Они изучают основы. Они глубоко учатся.
Что между вами и опытным старшим инженером?
Многое из того, что отличает «просто разработчика» от «старшего разработчика», — это независимость — способность глубоко погрузиться в техническую проблему и, проведя исследование, найти правильный ответ.
Многие технические проблемы в мире Ruby и Rails требуют проникновения в код фреймворка или через него. Будь то фреймворк Ruby on Rails, Hanami, Sinatra или что-то еще, важно понимать, как работают фреймворки и приложения.
Ничто так не учит вас фреймворкам, как написание фреймворка. Это не больше волшебства, чем любое другое кодирование. Это опыт и работа. В частности, это опыт и работа по написанию и отладке фреймворка.
К сожалению, этот опыт может быть трудно получить на работе, если вы не делали этого раньше. Это еще одна «вы не можете делать работу, пока у вас не будет опыта», которую вы видели раньше.
Вот один из способов выйти из этого тупика: не ждите, пока работа скажет вам построить структуру. Просто иди построй один. Пересборка Rails может помочь.
Сборка
Ваша платформаС помощью Rebuilding Rails вы создадите полноценную среду Ruby MVC из пустого каталога. Ваш фреймворк будет структурирован как Rails, с использованием той же архитектуры и того же приемы метапрограммирования. Вы узнаете магию Rails. Вы закончите каждый система и закрепите свои знания с помощью структурированных упражнений. И вы поймете, что на уровне нутра есть только у строителя фреймворка.
Чтобы стать экспертом, изучите основы. Тогда можно подобрать не просто Rails, а любой фреймворк вы хотите. Пересборка Rails покажет вам приемы и с чего начать чтение исходного кода.
Когда вы построили эти системы, вы получаете что-то вроде рентгеновского видения фреймворка. У вас уже было это раньше с кодом, который вы создали для себя. Разве вы не хотели бы того же для Rails, Sinatra или выбранного вами фреймворка?
Перспективное мастерство
В какой-то момент вы понимаете основы кодирования, и пришло время взять на себя больше ответственности. В какой-то момент вы должны быть готовы взять на себя ответственность за более крупные и уродливые ошибки и функции. И поэтому в какой-то момент вам нужно освоить работу с кодом фреймворка.
Чтобы освоить Rails, а также Rack и другие фреймворки Ruby, вам нужно работать с основными концепциями. Это означает знание того, как устроена структура MVC. Это также означает метапрограммирование. И вы должны знать несколько различных подходов к созданию различных компонентов этой структуры.
Никакая книга не может полностью подготовить вас. Это требует практики. Но Rebuilding Rails может помочь вам начать эту практику и показать вам , как практиковаться. Никто не разбирается во фреймворках так, как инженер, создавший фреймворк. Это, дорогой читатель, можешь быть ты.
Чему вы научитесь
В каждой главе книги «Восстановление Rails» показано, как построить одну систему на основе Rails-подобной среды MVC. Что это за системы?
- Глава первая: Gem, Gemfile, Framework
- Глава вторая: Контроллеры
- Глава третья: автоматическая загрузка классов и файлов
- Глава четвертая: представления и шаблоны
- Глава пятая: Модели
- Глава шестая: Запросы стойки и ответы
- Глава седьмая: ORM и модели на базе баз данных
- Глава восьмая: Advanced Rack для всех платформ
- Глава девятая: Расширенная маршрутизация с помощью DSL
Каждая глава учит вас большему количеству магии Ruby, что делает Rails более прозрачным. Книга на 178 страницах надолго увлечет вас. В каждой главе представлен основной материал и несколько упражнений, а также ссылки на исходный код Ruby on Rails.
Вот полное оглавление.
Вы также получите доступ к сообществу Software Technique Slack. Это отличное место задавать вопросы автору и другим перестроителям.
Хотите использовать Rebuilding Rails для книжного клуба? Он отлично работает для этого. Я сделал это несколько раз, сам. Здесь есть некоторые рекомендации, как это сделать.
Подходит ли мне пересборка Rails?
Вам следует пересобрать, если:
- Вы являетесь программистом на Rails среднего уровня и хотите глубже изучить Ruby и/или Rails
- Вы хотите внести свой вклад в Rails, но не знаете, как начать
- Вы любите знать, как все работает
- Вы хотите учиться в своем собственном темпе, но сообщения в блоге слишком поверхностны
Сделать НЕ купить, если:
- Вы не будете набирать и запускать код! — вы становитесь лучше, только если вы делаете работу!
- Вы совершенно не знакомы с Ruby
- Вам нужно руководство по API, а не структурная перестройка или основы.
- Вы пробуете образцы глав и не учитесь на них
Беспокоитесь о том, что вам нужно сначала попрактиковаться в Ruby или Rails? Известный учебник по Rails от Майкла Хартла превосходен — гораздо больше, чем вам действительно нужно для понимания перестроения Rails. Также есть бесплатная старая версия онлайн. Или вы можете поработать с примерами глав «Восстановление Rails» и посмотреть, как много вы из них узнаете.
Вы получите мою поддержку
Я написал для вас много полезной информации и протестировал ее на моей бета-аудитории, состоящей из сотен преданных читателей и программистов. Вы также получите мой личный адрес электронной почты. Я читаю каждое твое сообщение. Пишите мне до покупки и после нее. Я люблю слышать от читателей.
Я хочу, чтобы больше людей понимали Ruby и Rails. Я помогу тебе.
Тем не менее, я знаю, что многие люди не хотят перебивать меня по моему личному адресу электронной почты. И когда-нибудь у меня может не хватить времени поговорить со всеми. Итак, теперь есть рабочее пространство Slack для покупателей Rebuilding Rails и Mastering Software Technique. Ваша покупка Rebuilding Rails дает вам право на пожизненное членство в этом сообществе (при условии, что вы поддерживаете разумные стандарты поведения).
Хорошо ли восстанавливать рельсы?
«Я подумал, что это здорово! Знание того, как ваши инструменты работают под капотом, — лучший способ понять и освоить их, и это именно то, что делает Rebuilding Rails. Мне очень понравилось, как вы сосредоточились на одной части за раз, предоставляя упражнения и контекст. от Rails. Отличный материал».— Джесси Стоример, автор книги «Работа с процессами Unix»
«Я из тех разработчиков, которым нравится знать, как идут дела на очень глубоком уровне.Я всегда хотел такую книгу… введение в настоящее глубокое погружение с рельсами. »
— Кирк Кенель
«Хорошо, черт вас побери, вы выиграли! Я куплю книгу: упражнения слишком хороши. Ваше предпочтение извлечения и изучения информации, обычно остающейся неявной, идеально подходит для меня. Вы пишете так, как будто ваша аудитория обладает минимальными знаниями и безграничным интеллектом». .»— Эли, инженер-испытатель
«Если вы когда-либо хотели лучше понять внутреннее устройство Rails, это хорошее место для начала, потому что в основном вы проходите и переписываете свою собственную версию Rails — и вы знаете, что это упрощенная версия Rails — но вы изучите в основном, как это работает, и как работает маршрутизатор, и как контроллеры работают вместе с представлением и тому подобным, и вы изучаете это, переписывая это самостоятельно. Так что я рекомендую это».— Авди Гримм, автор книги «Уверенный рубин»
Подробнее о восстановлении рельсов от читателей…
Довольные клиенты из сотен организаций, включая
Об авторе
Ной Гиббс (это я) — известный спикер международных конференций. который выступал на RubyConf, RailsConf, RubyKaigi и многих других. Ной провел годы в качестве главного инженера, технического руководителя, архитектора, члена Ruby Fellow и многого другого. Его работа над перформансом Ruby в течение многих лет регулярно появлялась в Ruby Weekly. Он имеет обширный опыт преподавания и наставничества в Ruby и за его пределами.
Заинтересованы, но еще не уверены?
Я хотел бы записать вас на первые несколько глав книги «Восстановление рельсов» и на электронная почта о внутреннем устройстве Ruby on Rails бесплатно. Если вам нравится образец главы, то, пожалуйста, подумайте о покупке полной версии позже.
Обычно здесь была форма регистрации, но я меняю почтовых провайдеров. Проверять вернемся через несколько дней!
Начать восстановление за $39,99
Купить на GumroadGumroad предлагает оплату кредитными картами и PayPal. Если вы не удовлетворены на 100%, получите полный возврат средств без вопросов в течение 60 дней.
Хотите, чтобы ваш работодатель возместил Rebuilding Rails? Отлично! Gumroad предлагает счета.
Вы также можете связаться со мной по поводу лицензий сайта.
Почему стоит платить за восстановление рельсов
Вы разработчик программного обеспечения. Ваше время дорого. Если вы не живете в США, Rebuilding Rails по-прежнему стоит всего несколько часов вашей зарплаты — в Соединенных Штатах обычная электронная книга может стоить около пятнадцати минут того, что бизнес фактически платит за то, чтобы вы оставались.
Если Rebuilding Rails делает вас лучше на два процента в том, что вы делаете в Rails, и вы остаетесь с вашим нынешним работодателем еще всего на два месяца, то RR принес вашему работодателю приличную прибыль. Каждый год работы после восстановления Rails (скажем, 50 недель работы по 40 часов в неделю) с двухпроцентным улучшением сэкономит 40 часов вашего времени на отладку, чтобы использовать его для более интересной работы, или сделает вас на 40 часов больше.