вторник, 24 января 2017 г.

Вот сегодня запиливая очередной апдейт в простеньком Ruby on Rails сайте я понял

Для чего подходит хорошо Ruby on Rails?

Для быстрого bootstrap, quick'n'dirty прототипа приложения. Чтобы всю схему с базой данных запилить за 5 секунд с шаблонами и простой управлялкой. Потому что ты уже знаешь все косяки и подводные камни и названия библиотек, все это проходит за пять секунд.

Но! Разрабатывать долго и сложно на Рельсах превращается в филиал ада на Земле. Очень много магии, механизмы кеширования как часть фреймворка тесно переплетенная с логикой. А чего стоит интеграция с jQuery и вот эта вот магия с .js.erb, .json.jbuilder ? WTF? Вот так сидишь и смотришь на очередной суперпупер gem который делает за тебя весь кодинг. А I18n? А управление очередями, а Live Stream или как это сейчас называется?

Всего этого не знаешь и не замечаешь, пока не пробуешь изучать функциональные языки на подобие Clojure.

Изучение Clojure абсолютно точно делает тебя лучше, умнее, быстрее. Применение функциональных паттернов в Руби делает код более изящным и читаемым и разделение смыслов более явным. 

Вот сегодня я почти полностью ушел от sqlite3 в пользу плоского YAML для сайта. Потому что зачем? В Clojure подобный фукнционал несет в себе формат EDN.

Вот например, отображать только те комментарии у которых есть поле коммент. Как это делается в базе, типа sqlite3, выборкой select * where comment is not NULL. Как делается через YAML? 

myfile = YAML.load(File.read('my.yaml'))

затем уже 
myfile["myarray"].reject{|i| !i.logo} 

оставит в коллекции только те значения, которые нужны. Минус задержка на обращение к базе, код автоматически становится быстрее, минус еще одна зависимость, плюс к управляемости данными. Данные же сейчас доступны в простом текстовом редакторе, вам для этого не нужен никакой SQL клиент! Минус сложность связанная с языком запросов, он здесь становится просто не нужен!

И главное, программа стала проще.

Комментариев нет:

Отправить комментарий