А вы знали, что на Ruby можно писать игры, причём сравнительно сложные? 🎮 Конечно, этот язык не подходит для того, чтобы создать игру уровня Ведьмак 3 или хотя бы такую, в которой можно играть за стражу дворца или эльфов, грабить корованы и набигать (палец вверх, если помнишь этот мем). Однако создать двухмерную бродилку или какой-нибудь квиз вполне реально. Для этого можно использовать MiniGL - библиотеку, которая в свою очередь построена на Gosu (более низкоуровневое решение) https://github.com/victords/minigl Например, один товарищ заморочился так, что написал аналог Super Mario Bros с возможностью сохраняться и даже редактировать уровни (правда, по его словам, ушло на это больше двух лет) https://github.com/victords/super-bombinhas Тема разработки игры на Ruby предложена уже давно и я очень надеюсь, что смогу посвятить ей время в ближайшую неделю, тем более, что первые наработки уже готовы. Пусть это и будет, в основном, развлекательный проект 😃
GitHub
GitHub - victords/minigl: A minimal Game Library built on top of the Gosu gem.
A minimal Game Library built on top of the Gosu gem. - GitHub - victords/minigl: A minimal Game Library built on top of the Gosu gem.
Chartkick - это, пожалуй, лучшее решение для построения графиков в приложении RoR https://github.com/ankane/chartkick Пробовал использовать это решение сам в двух проектах и остался очень доволен. Кстати, в своё время мне даже довелось написать пару руководств по теме https://www.sitepoint.com/make-easy-graphs-and-charts-on-rails-with-chartkick/ (основы) и https://www.sitepoint.com/graphs-on-rails-chartkick-in-practice/ (более детальные примеры)
GitHub
GitHub - ankane/chartkick: Create beautiful JavaScript charts with one line of Ruby
Create beautiful JavaScript charts with one line of Ruby - ankane/chartkick
Создание разметки для e-mail - это не самый приятный процесс, так как существует множество ограничений и неочевидных моментов. Однако фреймворк MJML позволяет сделать этот процесс куда проще. Я использовал это решение в паре проектов и скажу честно: времени экономится весьма прилично. https://mjml.io/
mjml.io
MJML - The Responsive Email Framework
The only framework that makes responsive email easy. MJML is a markup language designed to reduce the pain of coding a responsive email.
Некоторое время назад мой коллега и я давали интервью для журнала BuiltIn, и оно наконец-то вышло. https://builtin.com/software-engineering-perspectives/website-localization Здесь мы отвечаем на некоторые общие вопросы, связанные с переводом приложений (неважно, каких) на разные языки 🤓
Built In
4 Top Website Localization Preparation Tips You Should Know | Built In
Ideally, you should start during the initial design phase.
PaperTrail - это классное решение для отслеживания изменений в моделях. С его помощью можно хранить множество версий одной и той же записи и даже переключаться между этими версиями https://github.com/paper-trail-gem/paper_trail
GitHub
GitHub - paper-trail-gem/paper_trail: Track changes to your rails models
Track changes to your rails models. Contribute to paper-trail-gem/paper_trail development by creating an account on GitHub.
Продолжаем наши уроки по Ruby on Rails 6! Сегодня поговорим о том, что такое CRUD (спойлер: create, read, update, delete) и узнаем, как позволить пользователю создавать, модифицировать и удалять данные. Также обсудим маршруты и немного затронем partials (частичные представления). https://youtu.be/5ntK2ssu1Ro
YouTube
Ruby on Rails 6/7, урок #3 | CRUD: создание, чтение, обновление, удаление
Продолжаем наши уроки по Ruby on Rails 6/7! Сегодня поговорим о том, что такое CRUD (спойлер: create, read, update, delete) и узнаем, как позволить пользователю создавать, модифицировать и удалять данные. Также обсудим маршруты и немного затронем partials…
Всем привет! Если кто-то вдруг не слышал о решении Ransack, то самое время взять его на вооружение :) Данный gem позволяет создавать сложные формы поиска и определять разнообразные критерии . Это значительно проще, чем писать всю логику самостоятельно! https://github.com/activerecord-hackery/ransack
GitHub
GitHub - activerecord-hackery/ransack: Object-based searching.
Object-based searching. . Contribute to activerecord-hackery/ransack development by creating an account on GitHub.
Всем неспящим посвящается :) Забавно, что этот трек я написал почти ровно год назад. Казалось бы, прошло совсем немного времени, а столько нового произошло. https://www.youtube.com/watch?v=AOO8BRJiVsM
YouTube
Ravens Die Laughing - Cold Rain
Darkwave, electronic, ambient
Пока новое видео готовится к выходу (а выходит оно завтра), немного юмора: gem для написания "вежливого" кода на Ruby в канадском стиле (ведь, как все знают, канадцы - самые вежливые люди в мире, в чём и я лично сумел убедиться). Кстати, обратите внимание на исходный код этого решения - он совсем короткий и написан неидеально, но там есть интересные подходы, связанные с метапрограммированием https://github.com/notwaldorf/ruby-eh
GitHub
GitHub - notwaldorf/ruby-eh: Ruby for Canadians: an instruction manual.
:gem: Ruby for Canadians: an instruction manual. Contribute to notwaldorf/ruby-eh development by creating an account on GitHub.
В этом видео мы узнаем, как выдавать сообщения об ошибках, а также сообщения об успешных действиях с помощью flash. Также поговорим о стилизации приложения с помощью Bootstrap 5. Самостоятельно советую посмотреть, как
flash работает с render. Подсказка: вам может помочь flash.now. https://www.youtube.com/watch?v=8Vej-cKPdKAYouTube
Ruby on Rails 6/7, урок #4 | Сообщения для пользователя и стили
Продолжаем уроки по Ruby on Rails 6/7! В этом видео мы узнаем, как выдавать сообщения об ошибках, а также сообщения об успешных действиях с помощью flash. Также поговорим о стилизации приложения с помощью Bootstrap 5.
Таймкоды:
00:00 Введение
00:30 bundle…
Таймкоды:
00:00 Введение
00:30 bundle…
Вот буквально сегодня обсуждали разные препроцессоры для представлений, и я понял, что не все знают: ERb - это вовсе не единственный вариант для Rails. Есть, например, https://haml.info/ - он позволяет писать меньше разметки, а его философия напоминает CoffeeScript (важную роль играет вложенность, нет закрывающих ключевых слов и тп). Но лично мне кажется, что ERb несколько более предпочтителен, особенно если в команде есть отдельно верстальщик, который может просто не знать Haml. Хотя, безусловно, это решение тоже очень интересное. А вы как думаете? 🤓 P.S. Новое видео должно выйти завтра
Сегодня поговорим о том, что такое 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.