DEV: Рубиновые тона – Telegram
DEV: Рубиновые тона
3.21K subscribers
145 photos
2 videos
8 files
981 links
Анонсы новых видео о программировании (Ruby/Rails, Solidity/Ethereum, Python, JS и не только), практические советы, обзор полезных инструментов и новости из мира IT
Download Telegram
Всех с наступающим :) 😀
Всем отличных выходных 😄 Не могу не поделиться внезапно обнаруженной записью: Heart исполняет Stairway to Heaven в 2012, звучит вполне достойно https://www.youtube.com/watch?v=2cZ_EFAmj08
Сегодня мы поговорим о том, как настроить GitHub Actions для запуска автотестов Ruby. Узнаем, что такое GitHub workflows, настроим CI, посмотрим, как добавлять бэйджи GitHub Actions, как управлять переменными среды и как просматривать информацию о запущенных задачах. Кроме того, обсудим использование нескольких Gemfile в процессе запуска тестов. https://www.youtube.com/watch?v=vVWTUujffLg
🔥7
Небольшая подсказка. Если в собственном классе вы добавляете модуль Enumerable и реализуете метод each (об этом мы говорили в одном из видео), то как его тестировать? Предположим, что метод реализуется так:

      def each
@items.each { |item| yield(item) }
end


Тогда в тесте мы можем написать:

expect { |b| object.each(&b) }.to yield_successive_args(String, String)


где object - образец класса с модулем Enumerable. В примере выше мы проверяем, что each последовательно выдаёт 2 строки (вместо String можно написать любой класс, включая собственный)
Сегодня мы поговорим о том, как существуют решения в Rails для управления assets (JS, CSS, изображения) и узнаем, какие нововведения в этом плане предлагает Rails 7. Мы откажемся от использования Webpacker и перейдём на куда более простой ESBuild, который также позволяет выполнять предварительную компиляцию JS. Ну, а для Sass мы задействуем обычный DartSass, который доступен просто как пакет NPM. Помимо этого, поговорим о том, как настроить PostCSS и Autoprefixer. В общем, "press F to pay respects", ибо Webpacker уходит в прошлое. https://youtu.be/RG5mIXF_LP0
🔥8🎉3
Сегодня мы узнаем, как делегировать методы в Ruby и обсудим три подхода: простое делегирование (проброс), делегирование с помощью method_missing, а также модуль Forwardable, который позволяет использовать def_delegators и решать данную задачу весьма лаконично и эффектно. https://www.youtube.com/watch?v=DoJz__qxoTM
👍14
Всем привет! Рад сообщить, что сегодня на канале стало доступно спонсорство, иными словами вы можете поддержать выпуск видео на регулярной основе :) На данный момент я добавил 4 уровня спонсорства, каждый со своими бонусами, поэтому будет, из чего выбрать. Кнопка "Спонсировать" находится на главной странице канала, либо под видео. В ближайшее время обязательно выпущу анонс, где расскажу обо всём подробнее. Есть есть мысли или идеи по поводу уровней и предлагаемых бонусов, обязательно поделитесь :) Увидимся!
🎉19
Итак, свершилось: наконец-то на канале включено спонсорство! В этом видео я расскажу, как стать спонсором и какие бонусы вы можете получить :)

ВАЖНОЕ ЗАМЕЧАНИЕ! Друзья, похоже, в некоторых странах спонсорство почему-то недоступно: точную причину я пока установить не смог, но это явно какие-то чудеса YouTube. Что можно сделать: подключиться к YT через VPN, либо попробовать сменить страну в настройках (например, попробовать поставить какую-нибудь европейскую страну). Прошу прощения за эти неудобства, но я боюсь, со своей стороны я вряд ли что-то могу сделать, так как никаких региональных настроек у меня в творческой студии нет. https://www.youtube.com/watch?v=1FDjuDGolds
🔥7👍1
Это первый урок в серии язык Solidity и написание смарт-контрактов Ethereum. Сегодня мы обсудим, что такое Ethereum и Solidity, обговорим их основные особенности, научимся работать с Remix IDE и напишем первый контракт, который позволит получать и отправлять денежные средства. Даже если вы не планируете становиться разработчиком смарт-контрактов, эти уроки имеет смысл смотреть просто для собственного развития, так как криптовалюта и блокчейн весьма распространены в наше время. https://www.youtube.com/watch?v=8A8-7Ks26yY
👍10🎉7
Друзья, небольшая подсказка для разработчиков Ruby. Будьте аккуратны, если вы используете memoization в коде, который может крутиться в нескольких процессах параллельно.

Memoization это примерно вот такое:

@my_var ||= do_complex_stuff()


И, соответственно, если создаются разные потоки Thread.new {} и там задействуется эта переменная, то в ряде случаев результаты могут быть совершенно непредсказуемые, особенно, если потоки эту переменную модифицируют. Я вот уже на это только что напоролся
👍10😱2
Небольшая новость для рубистов, использующих Faraday 🤓 Вышла версия 2, и, в числе прочего, было заявлено, что faraday_middleware более не будет поддерживаться. Вместо этого будет создана коллекция отдельных библиотек для Faraday, которые можно будет устанавливать отдельно. Список тут, но мигрированы пока не все, так что если у вас используется middleware, то обновляться до faraday 2, возможно, пока рановато https://github.com/lostisland/awesome-faraday
Сегодня мы поговорим о классе Thread, встроенном в Ruby, который позволяет легко внедрять многопоточность в ваши скрипты. Мы узнаем, в чём его отличие от Process, как создавать и завершать потоки и напишем приложение, которое будет конвертировать файлы Markdown в HTML с использованием множества потоков. https://www.youtube.com/watch?v=XhRv-vx7uoU
🔥8👍3
Друзья, давненько мы не играли в вопрос-ответ 🤓 Пока готовится новое видео (а оно выйдет уже завтра), предлагаю загадку, которую я придумал пару лет назад (она уже игралась на одном турнире, так что если кто знает, просьба не спойлерить).

Итак, название группы Sunn O))) - это не только отсылка к логотипу усилителей, но и дань уважения другой более ранней группе под названием "ТРЕТЬЯ", которая играет в том же стиле и даже считается его основательницей. На эту дань уважения, в частности, намекает стилизация O))) и, конечно же, слово Sunn. Какое слово было заменено словом "ТРЕТЬЯ", как на самом деле называется эта группа?
👍1
Продолжаем уроки по Solidity и Ethereum! Сегодня поговорим о таких типах данных, как bool (булев или логический тип), а также о целых числах uint и int. Узнаем, в чём между ними разница, какая бывает размерность, как работать с этими типами данных, какие существуют операции и зачем нужен unchecked. https://www.youtube.com/watch?v=alK0PY-Qa4Q
🔥10
Если вы хотите использовать в своём приложении Ruby/Rails для перевода Gettext (а не стандартный I18n с файлами YAML), то решение fast_gettext - это то, что вам нужно. Эта библиотека весьма шустрая, поддерживает все фичи Gettext и развивается на протяжении многих лет. На днях ещё скину материал по теме (когда допишу 😄) https://github.com/grosser/fast_gettext
👍3
Пора поставить точку в этом противостоянии. На какой вы стороне?
Anonymous Poll
85%
RSpec
11%
Minitest
4%
Cucumber