frozen_string_literal: 🤡

Знадобилося тут попрограмувати трохи (поганий той штурмовик що забув як програмувати), поки прокрастинував та думав як краще організувати новий проєкт, дай думаю оновлю старий.

Ласкаво просимо до проклятого світу веброзробки!

Зробив bundle update, запустив локально, прогнав тести, „на моїй машині працює!”, пушу в репозиторій, build failed. Причому failed на тих самих тестах. WTF, в мене ж все працювало!

Іду розбиратися, виявляється що в релізі Rails 7.1 команду rake assets:precompile, яка збирає фронтедерські діла (css, js, ассети й тд) включили до команди rails test яка запускає тести. Ну типу раз ми вже тести женемо давайте фронтенд зберемо, а то мало що там може бути.

А команда не пройшла на CI, тому що там не було css-файлів які брались з node_modules, які я там не інсталив в тестах, бо воно не треба було.

Взагалі мені JS не потрібен, а node_modules є, щоб мати на диску Daisy UI, який Rails мені люб'язно пакує в проєктний CSS бандл.

Щоб не додавати ноду разом зі всім барахлом в тестовий імедж я вирішую піти шляхом, який треба було обрати з самого початку — завендорити той CSS. Добре що в гітхаб тікеті дворічної давності для бібліотеки tailwindcss-rails вже є рішення для конкретного CSS фреймворку і там є навіть мій комент.

Приємно знаходити відповіді на свої питання, але ще приємніше бачити що ти взяв участь в обговоренні.

Качаю CSS, тестую — все працює. Бандл правда збільшився на скількись кілобайт, причина того мені невідома, десь @import не так написав чи що, вже вирішив не гаяти на те час.

Проєкт оновився, ура, все працює. Час переходити до наступного.

Ставлю новий, а тут вже ж Різдво було, а що у нас на Різдво? А на Різдво у нас завжди виходить мінорний реліз Ruby, цього разу це 3.3.0.

Ставлю його, ініціалізую проєкт, туди-сюди, хочу запустити Rails Console, щоб відразу в репл і програміровать, запускаю, пишу там гелоу ворлд, а мені зась! Ніц немає, відповіді нема, репл пустий.

WTF, думаю може мене «чехи» з JetBrains надурили вчергове і я там не прописав якийсь дурнуватий параметр, йду перевіряти та нє, ніби все ок. Пробую інший проєкт — працює. Пробую новий — не працює. Згадую що колись мав таку проблему, але забув як вирішив. Чищу кеші, вмикаю-вимикаю комплюхтор, перестворюю конфігурацію. Не допомагає.

Йду на багтрекер JetBrains і звичайно ж знаходжу там багу, виявляється в Rails Console який запускається з IntelliJ не працює в Ruby 3.3.0, девелопери розбираються.

Ок думаю, з терміналу попрацюю, хоч це і не зручно, там все ок.

Роблю новий і клас — що за чудеса! — першим рядком в згенерованому файлі йде frozen_string_literal: true. А це ще що таке? Чому раніше не було? Ах, це якась оптимізація, типу щоб не казати кожному рядку що він імутабельний, ми це робимо на рівні всього файлу. Колись Matz (автор Ruby) хотів зробити всі рядки за замовчуванням іммутабельними, але потім передумав. А тепер розробники IntelliJ чомусь вирішили що треба цей комент додавати. Ну типу, а чому б і не викусити пару мікросекунд на виділенні пам'яті та не зекономити пару байт на перевикористаних рядках?

Я згадав про геніальне # -*- coding: utf-8 -*- в другому пітоні.

І подумав: шо за фігня, чому машини самі не можуть роздуплитися коли їм треба той рядок реюзати, а коли не треба, щзх, чому у 2024 у мене кожен файл має бути засраний архаїчними конструкціями двадцятирічної давності які ще й користі принесуть близько нуля!

Видалив той коментар гарбедж колектору на зло.

Ви кажете прогрес технологічний, але подивіться, мені досі треба знати про існування гарбедж колектору та якихось магічних коментів які полегшують йому (а не мені!!!) життя!

Короче шляпа повна наше програмування.


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred