DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.21K subscribers
145 photos
2 videos
8 files
981 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Сюда тоже продублирую небольшую ремарку для последнего видео про отношения "один-ко-многим". Друзья, в видео закралась неточность, которую я просто-напросто забыл исправить. При создании метода 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 проверяется по крайней мере ещё одним разработчиком, так как время от времени даже авто-тесты от дурацких багов не спасают. Как говорится, тесты могут показать наличие багов в системе, но никак не их отсутствие.
https://markodenic.com/css-tips/ - всякие фишки и подсказки по CSS, любопытный материал
Этот урок по Ruby on Rails 6, в принципе, можно считать частью предыдущего. Мы поговорим о ряде других вспомогательных функций, в частности, strip_tags и sanitize. Кроме того, узнаем, как выносить часть разметки в отдельные представления и рендерить коллекции. Помимо этого, познакомимся с решением Faker для загрузки демо-данных и узнаем, как разбивать записи по страницам с помощью Kaminari. https://www.youtube.com/watch?v=FwFhxbx3W3k
В комментариях к одному видео оставлен резонный вопрос: в чём разница между belongs_to и references в миграциях? Ответ простой: разницы нет, это синонимы https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Table.html#method-i-belongs_to
Очередной урок по Ruby on Rails 6! Сегодня будет очень важное видео, в котором мы создадим систему регистрации пользователей с нуля, поговорим о решении bcrypt и о том, как работать с сессией. Кроме того, обсудим хелпер dom_id и узнаем, как использовать решение pagy для разбиения записей по страницам (это альтернатива kaminari). https://youtu.be/7bn0M4Br4hc
Первое видео экспериментальной серии "Создаём игру-квиз на Ruby с помощью Gosu и MiniGL". Конечно, писать очень сложные трёхмерные игры на Ruby никто не будет, но вот сделать двухмерную бродилку или квиз вполне реально - для этого мы используем движок MiniGL, который, в свою очередь, основывается на Gosu. В первом видео мы обсудим этот движок, создадим конфигурацию, посмотрим, как отрисовывать объекты на игровом окне, проигрывать звуки, и работать с событиями. https://www.youtube.com/watch?v=fy1qwUeNSEo
Если вы пишете сайт на Rails и хотите сгенерировать карту сайта, то лучшее решение - это, на мой взгляд, https://github.com/kjvarga/sitemap_generator. Его уже можно назвать проверенным временем (я его использую в своём блоге уже долгие годы), оно поддерживает разные хранилища для карт, позволяет "пинговать" поисковики и предлагает множество других фич. Очень советую!
Сегодня будет большой и важный урок, в котором мы обсудим, что такое декораторы, как выполнять аутентификацию пользователя, как выходить из системы, как измерять сложность пароля и проверять корректность введённых электронных адресов, а также как требовать от пользователя вводить старый пароль при задании нового и как создавать собственные валидации. https://www.youtube.com/watch?v=4C8dEznmkI8
Интересное решение, которое позволяет выводить объекты Ruby в более удобоваримом виде: с правильными отступами и даже в цвете https://github.com/amazing-print/amazing_print 🧙‍♂️
Goldiloader позволяет автоматически выполнять eager loading в приложении Rails. Сказать честно, сам я это решение ещё не пробовал, но выглядит любопытно https://github.com/salsify/goldiloader
А вы знаете, что исключения в 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, то будет повторно вызвано то же самое исключение с тем же сообщением.
Closure Tree - классное решение для создания иерархий в ActiveRecord. Например, с помощью данного решения можно легко создавать "вложенные" комментарии https://github.com/ClosureTree/closure_tree
Сегодня поговорим о том, как добавить на страницу входа в систему галочку "запомнить меня" и правильным образом реализовать данный функционал. Кроме того, добавим в наше приложение Rubocop - статический анализатор кода, который проверяет, следуете ли вы рекомендованным практикам по стилю и даже исправляет некоторые недочёты автоматически. Закончим же мы рефакторингом некоторых частей нашего приложения. https://www.youtube.com/watch?v=gXl82AdMK9w
И ещё немного материала в ленту. Мы недавно с нашим фрилансером подготовили список из хороших блогов и агрегаторов новостей, которые могут показаться интересными разработчикам 🤓 https://lokalise.com/blog/top-dev-blogs-to-read-in-2021/