Category Archives: Ruby and Rails

Немного о Ruby & Ruby on Rails

Выпущен Ruby on Rails 1.1

Примерно 7 часов назад в свет официально вышел Ruby on Rails версии 1.1. Создатели очень расхваливают 500 изменений от 100 контрибуторов.

Особенно выделяют RJS: Ajax has never been easier – JavaScript из/в Ruby. Возможность работать с полями ввода при помощи JavaScript без выхода из Ruby (т.е. всё делается путём написания кода на Ruby), этакий монстр от Sam Stephenson. Пример по простоте впечатляет. Документация готова а так-же представлены RJS Templates, и RJS Element and Collection Proxies. Учитывая новшества, в них придётся вникать и осваивать немного дольше, чем хотелось. Как за всем угнаться?

Active Record тоже обновили: обещанные polymorphic associations, bottomless eager loading, адаптары под Sybase и OpenBase, to_xml и calculations. Примеры с bottomless eager loading с их оптимизацией запросов с JOIN, плюс примеры polymorphic associations простаки убивают своей простотой. Такое желание всё бросить и попробывать всю эту прелесть прямо сейчас, обновив Ruby до версии 1.8.4 и Ruby on Rails до версии 1.1.

Новый способ respond_to упростит написания на одном методе контроллера как ответ не только для AJAX, или стандартного HTML запроса, но и для какого-либо XML API или сервисов. Вся эта технология основана на Accept HTTP заголовках. Мне очень приятно, что создатели и разработчики Ruby on Rails думают о предоставляемой им информации от навигатора.

Остальные новости можно прочесть в статье What new in Rails 1.1 и, естественно, в changelogах.

Обновление обещают безболезненным и быстрым, всеголишь надо обновиться до Ruby 1.8.4 и Ruby on Rails 1.1. Вот только некоторые plugin и gem, не совместимые с Ruby on Rails 1.1, могут не работать. Рекомендуется их обновить с совместимыми, если такие есть.

А теперь покажите мне framework на PHP который всё так-же красиво умеет и может.

Как я менял стиль валидационных ошибок на полях

Ruby on Rails не перестаёт меня удивлять. Сегодня я интегрировал кодинг в пре-бету проекта и мне понадобилось сменить стиль валидационных ошибок на полях ввода. Вроде ситуация то мёртвая с первого взгляда – всё глубоко зарыто в коде аж до самого “actionpack/lib/action_view/helpers/active_record_helper.rb”. Тут в голове появляются скверные мысли об использовании Override и прочего, но лень (и не полное знание Ruby и RoR) побеждает и я иду к старшему брату с вопросом “ruby on rails error input style”. Брат сегодня в хорошем настроении и первой ссылкой мне отдаёт статью о моей проблеме из wiki Ruby on Rails. Последний пример с перестановкой классов меня вполне удовлетворит, но мне слабо вериться, что нету более “удобного” способа, чем регексп. Маленькое но: всё это перепишет вывод сообщения об ошибках для всех ActionView…

По идее надо будет собрать кодеров (тех, с которыми работаю) и попросить их, совместно составить правила кодинга шаблонов. Я отдаю себе отчёт, что им с этоими дизайнерами не легко приходиться, но при вёрстке шаблонов, иногда хотя-бы какую-то повторяемость шаблонов и совместимость с системой делать надо, тем более, почти всегда пре-бета в сером виде же есть.

Rails 1.1: Release Candidate 1, и другие новости с этого фронта

Доброе утро (да я утром пишу, в первые 30 минут рабочего дня обычно). Особенно доброе это утро любителям кандидатов и Ruby on Rails – Rails 1.1: Release Candidate 1 available. Да, через 3 месяца они сделали кандидат 1 версии 1.1. Хорошо! Отлично просто. 500 фиксов, твиков и фишек.Обратная совместимость с Ruby on Rails 1.0, за исключением изменений нескольких настроек по умолчанию. И они не хотят никаких кандидатов 1.1.1 (явный камень в сторону Zend Framework). Некоторые подробности, связанные с Rails 1.1 можно увидеть в статье What (will be) new in Rails 1.1. Естественно есть намёки о том, что следует купить Rails Recipes, что бы узнать больше. Может действительно выложить эти ~22$?

Продолжая тему Ruby on Rails, мы должны отметить что RadRails был награждён Eclipse Best Developer Tool Award. Симпатичный такой приз, И я бы сказал реклама Apple на заднем фоне. Хотя я не против – я даже за, что рядом видно белое надкушенное яблоко – искушают.

Очень понравилась идея Rails meeting в Амстердаме 30 марта. Пятница, да и город располагающий к meetingу. Интересно, когда у нас в Вильнюсе пройдёт первый такой meeting?

Дмитрий Сабанин перевёл статью Curt Hibbs: What is Ruby on Rails. Теперь у нас есть прекрасный русский Что такое Ruby on Rails 1.0?. Будет теперь куда человека послать, что бы ознакомился, какие рельсы мы укладываем, и какие шпалы мы используем.

А в заключении представлю Ruby Cheatsheet v.1 – 1 PDF или 2 PNG основной информации о Ruby 1.8.4: типы, выражения, переменные, аргументы, резервированные слова, константы, подсказки с классами, константы, Regexы, методы основных классов. Для начинающих вполне хорошая подсказка.

Acts As Taggable – plugin и gem

Что бы понять разницу с Acts As Taggable plugin и gem версией, можно ещё почитать 2 поста в блогах: Michael J.’s Notio: Rails acts_as_taggable: Plugin vs Gem и Ruby on Rails: acts_as_taggings : plugin vs gem (за данные ссылки отдельное спасибо Роману Голомидову). Там вы сможете почитать размышления на тему plugin vs gem и довольно интересную переписку о Acts As Taggable с David Heinemeier Hansson.

Мне совсем понравилась идея с названием “acts_as_polytaggable”. Ех, эта вечная проблема документации…

Всё совсем просто: всем открыто доступен gem Acts As Taggable, для версии Ruby on Rails 1.0, для которого есть много документации и примеров. Параллельно ему существует plugin Acts As Taggable, использующий возможности Ruby on Rails 1.1 и совсем не документированный.

Ruby On Rails, Acts As Taggable

Так как после падения материнской платы, я переставил всю операционную систему, мне пришлось сегодня переставить и Ruby, Ruby on Rails, и всё что связано с этим программным обеспечением и проектами. Перезапустить всё и перепроверить 50% тестовых хостов. Тем самым я наткнулся на интересную статью в Wiki Ruby on Rails, связанную с плугином Acts As Taggable. Статья описывает один из способов установки (ставиться Edge Rails) и использования плугина Acts As Taggable, которого я раньше не видел. Что ещё примечательно, это структура таблиц в базе, позволяющая “тагить” любой обьект проекта. Мало того, данная статья абсалютно расходиться с официальной документацией к этому плугину.

С одной стороны, хочеться нарушить закон “Работает – не трогай” и поставить всё так, как там описано, с другой – а оно мне так надо? Ведь убью кучу времени на функционалию, которая в данный момент мне не нужна.

Что нового будет в Rails 1.1 и немного секретов Prototype.js

Наткнулся (да, я не знал об этом блоге раньше) на классный блог, который ведёт Scott Raymond. Советую вам прочесть What (will be) new in Rails 1.1 если вы интересуетесь Ruby on Rails, a также Developer Notes for prototype.js для тех кто использует модный AJAX на prototype библиотеке.

Мне же, поработав с Ruby on Rails над первым проектом, складывается впечатление, что на Ruby on Rails быстро собирается только первые беты, по которым потом надо ходить и долго отлаживать всё до нормального состояния. По крайней мере этим сейчас занят я. Хотя, возможно всё так потому что проект пишется от части спонтанно, и функциональная возможность, придуманная утром, к обеду уже находится в бета версии и к ней уже придумывают изменения.

Да, вчера познакомился поверхностно с ActionMailer и отослал первое письмо при помощи этой модели. Мне опять же понравилось. Казалось бы пока всё в этом framework предусмотрено для достаточно быстрой разработки – ходить и выбирать, с чем бы мне тут письмецо отправить, не надо – всё с собой, всё приготовлено и настраивается быстро под нужды и возможности. Нужно подробнее ознакомиться с возможностями ActionMailer – мне нужны письма с прикреплёнными файлами через Content-ID и письма с multipart/alternative частями.

Проект “Ы”, Ruby on Rails, Acts as Taggable, скорость разработки

Последние ~14 рабочих часов провёл исключительно на Ruby on Rails, программируя простенький проект “Ы”, так сказать, такую рамку небольшую. Всё причём идёт под “идеологию” WEB 2.0. Красиво и просто – тагизация объектов зарегистрированными пользователями.

Саму базу, регистрацию, редакция профайла, создание самих объектов, их редакцию, обработку при сохранении основных данных написал за 5 часов вчера с интерфейсами на скафолдах. Т.е. это был простой, тупой и доверчивый скафолдах только показать шефу. Заметил что с сетью и сетевыми операциями (такими как загрузить картинку с удалённого сервера) Ruby работает быстрее.

Сегодня нашёл, поставил и разобрался с acts_as_taggable плугином. Вот и сделана тагизация. С облаком тагов, с выводом объектов по тагу, с поиском по нескольким тагам. Проще некуда. Спасибо авторам. Долго разбирался с валидациями. Конечно не так долго, как бы это пришлось бы имплементировать с нуля на PHP. Классно построено с валидациями. Особенно понравился :if в условиях. О том, что сделать список из “эн” последних созданных с created_at никаких вообще заморочек! А постраничный вывод? Сразу и всё работает. Вобщем день прошёл успешно. Всем спасибо!

Возможно для профессионала (точнее смотря глазами профессионала) я потратил времени и много на всё это, но меня пока время потраченное на этот проект “Ы” устраивает.

Да, я отдаю себе отчёт что это framework, но то, как он продуман – меня очень даже устраивает. Всё просто, прозрачно, понятно. Надо только привыкнуть к документации и уметь пользоваться Google. Да, признаюсь, мне в данный момент не хватает примеров, я ещё не привык к некоторым возможностям Ruby on Rails и то что большинство решений разбросано по куче разноязычных блогов.