Я, наконец, закончил раздел Sinatra в учебной программе Learn.co, а это значит, что мне нужно сделать полное приложение Sinatra с нуля.

Я писал в блоге в прошлом, что участие в проекте — лучший способ узнать о нем, и это было верно и в этом случае; В процессе создания этого проекта я узнал о Синатре больше, чем за весь предыдущий раздел лекций и лабораторных работ.

Первым шагом, конечно же, было придумать идею для моего проекта, поэтому в прошлый Шаббат я разговаривал с другом-разработчиком и спросил его, есть ли у него идея для приложения Sinatra, которое я мог бы сделать. Он начал выдвигать разные идеи и где-то между блогом и приложением для рыбалки упомянул: «…вы могли бы попробовать клон Reddit… на самом деле неважно, это, наверное, слишком сложно…»

Мне не нужно было ничего большего, и сразу же мои колеса начали крутиться, думая о различных функциях, моделях и ассоциациях, которые потребуются моему приложению.

Как только закончился Шаббат, я сразу же направился к своему компьютеру и начал претворять план в жизнь.

Обычно самое сложное — это начать, к счастью, об этом позаботился мой сторонний проект; Генератор Scaffold, который я построил для драгоценного камня Corneal (о нем читайте здесь).

Мое приложение Reddit (которое я назвал freddit по соглашению об именах Flatiron, которое дало нам fwitter) — очень простой клон. У него есть пользователи, которые могут регистрироваться, входить в систему, создавать темы под названием Беседы, отвечать на Беседы других пользователей, редактировать сообщения и некоторые другие функции, которые я опишу позже.

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

Ситуация усложнилась, когда я разрешил определенным пользователям быть «модераторами» с возможностью редактировать сообщения любого другого пользователя и даже забанить пользователя, когда это необходимо.

Обработка всей этой сложности привела к довольно уродливому коду, но благодаря некоторым действительно полезным друзьям и замечательным инструкторам из Learn.co (привет MendelB!) я смог преобразовать его во что-то более управляемое.

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

Удачного кодирования!