Сегодня поговорим о том, что такое before_action, как обрабатывать ошибки в контроллерах с помощью rescue_from, как использовать concern, а также как выстраивать отношения "один-ко-многим" (one-to-many) с помощью has_many и belongs_to и управлять соответствующими записями. https://www.youtube.com/watch?v=1D_HUuWCamw
YouTube
Ruby on Rails 6/7, урок #5 | Отношение "один-ко-многим" и обработка ошибок
Продолжаем уроки по Ruby on Rails 6/7! Сегодня поговорим о том, что такое before_action, как обрабатывать ошибки в контроллерах с помощью rescue_from, как использовать concern, а также как выстраивать отношения "один-ко-многим" (one-to-many) с помощью has_many…
❤🔥1
Ну, и немного юмора в ленту сегодня (придумал недавно). Итак, внимание вопрос. По шуточному мнению одного комментатора, во время первой дозы вакцины вам вводят ИКСА, а во время - второй ИГРЕКА (причём, видимо, прямо в модной рубашке). Назовите ИКСА и ИГРЕКА.
Короткий рассказ о том, как фронт-энд делать не нужно https://meduza.io/shapito/2021/07/02/stoite-v-poluchasovoy-ocheredi-na-gosuslugah-zrya-okazyvaetsya-sayt-legko-obmanut-eto-delaetsya-v-paru-klikov
Meduza
Стоите в получасовой очереди на «Госуслугах»? Зря! Оказывается, сайт легко обмануть — это делается в пару кликов
Пользователи «Госуслуг» столкнулись с проблемами при входе на сайт — их отправляют в получасовую виртуальную очередь (Минцифры сообщило, что это связано с внедрением новых сервисов). Таймер обнуляется при каждом обновлении страницы.
Сюда тоже продублирую небольшую ремарку для последнего видео про отношения "один-ко-многим". Друзья, в видео закралась неточность, которую я просто-напросто забыл исправить. При создании метода show для вопросов на моменте 00:19:10, нужно не просто писать
Answer.order created_at: :desc (вот эта строка кода https://github.com/bodrovis-learning/RailsSeriesYT/blob/lesson_6/app/controllers/questions_controller.rb#L6), а всё-таки @question.answers.order created_at: :desc, чтобы вытащить не просто вообще ВСЕ ответы в принципе, а только те ответы, которые были написаны для КОНКРЕТНОГО вопроса. Спасибо зрителю Victor Malukhin за внимательность! Мне правда очень неловко, что я это дело как-то проморгал - в следующем видео (думаю, что уже завтра) это обсудим. Ну, собственно во избежание таких проблем каждый PR проверяется по крайней мере ещё одним разработчиком, так как время от времени даже авто-тесты от дурацких багов не спасают. Как говорится, тесты могут показать наличие багов в системе, но никак не их отсутствие.GitHub
RailsSeriesYT/questions_controller.rb at lesson_6 · bodrovis-learning/RailsSeriesYT
Серия уроков по Ruby on Rails на YouTube. Contribute to bodrovis-learning/RailsSeriesYT development by creating an account on GitHub.
https://markodenic.com/css-tips/ - всякие фишки и подсказки по CSS, любопытный материал
CSS Tips
CSS tips and tricks you will not see in most tutorials.
Продолжаем уроки по Ruby on Rails 6! В этом видео мы напишем несколько собственных вспомогательных функций (helpers) и узнаем, зачем они нужны. Кроме того, ещё немного поговорим о контроллерах и представлениях. https://www.youtube.com/watch?v=lm5SFwaob2U
YouTube
Ruby on Rails 6/7, урок #6 | Вспомогательные функции (helpers)
Продолжаем уроки по Ruby on Rails 6/7! В этом видео мы напишем несколько собственных вспомогательных функций (helpers) и узнаем, зачем они нужны. Кроме того, ещё немного поговорим о контроллерах и представлениях.
Таймкоды:
00:00 Введение
00:30 Исправление…
Таймкоды:
00:00 Введение
00:30 Исправление…
Этот урок по Ruby on Rails 6, в принципе, можно считать частью предыдущего. Мы поговорим о ряде других вспомогательных функций, в частности, strip_tags и sanitize. Кроме того, узнаем, как выносить часть разметки в отдельные представления и рендерить коллекции. Помимо этого, познакомимся с решением Faker для загрузки демо-данных и узнаем, как разбивать записи по страницам с помощью Kaminari. https://www.youtube.com/watch?v=FwFhxbx3W3k
YouTube
Ruby on Rails 6/7, урок #7 | Pagination, seeds, faker и пользовательская разметка
Этот урок по Ruby on Rails 6, в принципе, можно считать частью предыдущего. Мы поговорим о ряде других вспомогательных функций, в частности, strip_tags и sanitize. Кроме того, узнаем, как выносить часть разметки в отдельные представления и рендерить коллекции.…
В комментариях к одному видео оставлен резонный вопрос: в чём разница между
belongs_to и references в миграциях? Ответ простой: разницы нет, это синонимы https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Table.html#method-i-belongs_toapi.rubyonrails.org
ActiveRecord::ConnectionAdapters::Table
Active Record Connection Adapters Table Represents an SQL table in an abstract way for updating a table. Also see TableDefinition and connection.
Любопытное решение для стриминга динамических zip-файлов из Rails https://github.com/fringd/zipline
GitHub
GitHub - fringd/zipline: A gem that lets you stream a zip file from rails
A gem that lets you stream a zip file from rails. Contribute to fringd/zipline development by creating an account on GitHub.
Очередной урок по Ruby on Rails 6! Сегодня будет очень важное видео, в котором мы создадим систему регистрации пользователей с нуля, поговорим о решении bcrypt и о том, как работать с сессией. Кроме того, обсудим хелпер dom_id и узнаем, как использовать решение pagy для разбиения записей по страницам (это альтернатива kaminari). https://youtu.be/7bn0M4Br4hc
YouTube
Ruby on Rails 6/7, урок #8 | Регистрация пользователей с нуля, bcrypt, pagy
Очередной урок по Ruby on Rails 6/7! Сегодня будет очень важное видео, в котором мы создадим систему регистрации пользователей с нуля, поговорим о решении bcrypt и о том, как работать с сессией. Кроме того, обсудим хелпер dom_id и узнаем, как использовать…
Немного музыки на сон грядущий. На днях надеюсь всё-таки сделать урок про квиз на Ruby, ибо эта тема лежит в долгом ящике слишком уж долго 😁 https://www.youtube.com/watch?v=gnBATT60R9Q
YouTube
07 - Esta É De Loor - Ordo Funebris (Songs From The Enchanted Garden)
Lyrics/Letra
Santa Maria
Strela do dia
Mostra-nos via
Per a Deus e nos guia
Ca ver faze-los errados
Que perder foran per pecados
Entender de que mui culpados
Son; mais per ti son perdõados
Da ousadia
Que lles fazia
Fazer folia
Mais que non deveria.
Santa…
Santa Maria
Strela do dia
Mostra-nos via
Per a Deus e nos guia
Ca ver faze-los errados
Que perder foran per pecados
Entender de que mui culpados
Son; mais per ti son perdõados
Da ousadia
Que lles fazia
Fazer folia
Mais que non deveria.
Santa…
Может кого-то заинтересует вакансия: https://lokalise.com/job?gh_jid=4442031003&gh_src=53da413a3us (в нашу компанию требуется менеджер по маркетингу)
lokalise.com
Join us
We are a rapidly growing SaaS company, looking for new team members who want to grow with us. Take a look at our job openings and apply to join Lokalise.
Первое видео экспериментальной серии "Создаём игру-квиз на Ruby с помощью Gosu и MiniGL". Конечно, писать очень сложные трёхмерные игры на Ruby никто не будет, но вот сделать двухмерную бродилку или квиз вполне реально - для этого мы используем движок MiniGL, который, в свою очередь, основывается на Gosu. В первом видео мы обсудим этот движок, создадим конфигурацию, посмотрим, как отрисовывать объекты на игровом окне, проигрывать звуки, и работать с событиями. https://www.youtube.com/watch?v=fy1qwUeNSEo
YouTube
Пишем квиз на Ruby, часть #1 | MiniGL, Gosu, конфиги, основа игры
Первое видео экспериментальной серии "Создаём игру-квиз на Ruby с помощью Gosu и MiniGL". Конечно, писать очень сложные трёхмерные игры на Ruby никто не будет, но вот сделать двухмерную бродилку или квиз вполне реально - для этого мы используем движок MiniGL…
Если вы пишете сайт на Rails и хотите сгенерировать карту сайта, то лучшее решение - это, на мой взгляд, https://github.com/kjvarga/sitemap_generator. Его уже можно назвать проверенным временем (я его использую в своём блоге уже долгие годы), оно поддерживает разные хранилища для карт, позволяет "пинговать" поисковики и предлагает множество других фич. Очень советую!
GitHub
GitHub - kjvarga/sitemap_generator: SitemapGenerator is a framework-agnostic XML Sitemap generator written in Ruby with automatic…
SitemapGenerator is a framework-agnostic XML Sitemap generator written in Ruby with automatic Rails integration. It supports Video, News, Image, Mobile, PageMap and Alternate Links sitemap extensio...
Сегодня будет большой и важный урок, в котором мы обсудим, что такое декораторы, как выполнять аутентификацию пользователя, как выходить из системы, как измерять сложность пароля и проверять корректность введённых электронных адресов, а также как требовать от пользователя вводить старый пароль при задании нового и как создавать собственные валидации. https://www.youtube.com/watch?v=4C8dEznmkI8
YouTube
Ruby on Rails 6/7, урок #9 | Декораторы, аутентификация, редактирование пользователей, валидации
Продолжаем уроки по Ruby on Rails 6/7! Сегодня будет большой и важный урок, в котором мы обсудим, что такое декораторы, как выполнять аутентификацию пользователя, как выходить из системы, как измерять сложность пароля и проверять корректность введённых электронных…
Интересное решение, которое позволяет выводить объекты Ruby в более удобоваримом виде: с правильными отступами и даже в цвете https://github.com/amazing-print/amazing_print 🧙♂️
GitHub
GitHub - amazing-print/amazing_print: Pretty print your Ruby objects with style -- in full color and with proper indentation
Pretty print your Ruby objects with style -- in full color and with proper indentation - amazing-print/amazing_print
Goldiloader позволяет автоматически выполнять eager loading в приложении Rails. Сказать честно, сам я это решение ещё не пробовал, но выглядит любопытно https://github.com/salsify/goldiloader
GitHub
GitHub - salsify/goldiloader: Just the right amount of Rails eager loading
Just the right amount of Rails eager loading. Contribute to salsify/goldiloader development by creating an account on GitHub.
А вы знаете, что исключения в Ruby можно повторно вызывать? А зачем? Ну, например, для того, чтобы изменить само сообщение об ошибке или сделать его более подробным. Или при появлении исключения сделать какое-то особое действие, после чего оставить остальную обработку на откуп самого программиста. Вот небольшой пример из одного проекта, который мне сегодня как раз и потребовалось модифицировать таким образом:
Получается, что тут мы добавляем более подробную информацию о том, на каком именно моменте произошла ошибка, а потом повторно её вызываем. Кстати, если написать просто
def open_and_process_zip(path)
Zip::File.open_buffer(open_file_or_remote(path)) do |zip|
fetch_zip_entries(zip) { |entry| process!(entry) }
end
rescue StandardError => e
raise e.class, "There was an error when trying to process the downloaded files: #{e.message}"
end
Получается, что тут мы добавляем более подробную информацию о том, на каком именно моменте произошла ошибка, а потом повторно её вызываем. Кстати, если написать просто
raise в rescue, то будет повторно вызвано то же самое исключение с тем же сообщением.Подготовил для вас небольшую напоминалку по популярным командам Git (а также кое-какую терминологию) https://lokalise.com/blog/10-git-commands-for-day-to-day-work/
Lokalise Blog
10 Git commands for your day-to-day work - Lokalise Blog
Learn about top 10 useful Git commands that you will use in your day-to-day work: make commits, manage branches, view logs, and more.
Closure Tree - классное решение для создания иерархий в ActiveRecord. Например, с помощью данного решения можно легко создавать "вложенные" комментарии https://github.com/ClosureTree/closure_tree
GitHub
GitHub - ClosureTree/closure_tree: Easily and efficiently make your ActiveRecord models support hierarchies
Easily and efficiently make your ActiveRecord models support hierarchies - ClosureTree/closure_tree