Category Archives: Web

Обо всём, что связано с WEB технологиями и мной

WordPress Widgets

Виджеты, виджеты, Widgets. Виджеты уже есть для WordPress – одно из самых популярных блог-движков на PHP. Плагин, позволяющий расставлять в желаемом порядке блоки в вашем сайдбаре без изменения самого шаблона. Плагин для кого-то будет очень полезным (я даже знаю, кто в ближайшие 2-3 часа его захочет и будет согласен за установку …). Им пользуется даже WordPress.com. Для виджетов даже сделали API – надо же как-то сообщество развивать.

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

Mike Clark – Rails 1.1: The Forgotten Features

Mike Clark опубликовал статейку о Rails 1.1: The Forgotten Features – забытые фишки. Обещает его обновлять в процессе своего знакомства.

Пока описал в основном такие возможности и изменения:

Больше никакого “Белого экрана смерти” – White Screen Of Death. Да, было и у меня такое, когда я переносил проект с сессиями хранящимися в базе, и забыл перенести таблицу с сессиями. Белы чистый экран.
Minimalist Database Configuration – теперь можно будет указать, под какую базу данных заготавливать config/database.yml Это даже как дискриминация была других баз данных, которых поддерживает Ruby on Rails.
New Temporary Directories – теперь cache, sessions и sockets будут храниться в доступном нам месте. Оно правильно, не надо будет ползать и искать этот чёртов системный temp.
Auto-Generated Migrations – автоматически генерируемые миграции. Надо обязательно с ними познакомиться поближе.
More In the Console – новые возможности в консоле. Батюшки, теперь можно хелперы прямо оттуда вызывать, и сами классы подгруженные перегружать, без перезапуска оной.
Application-Specific JavaScript – для особо ленивых сделают даже файл, куда JavaScript писать.

Выпущен 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, которого я раньше не видел. Что ещё примечательно, это структура таблиц в базе, позволяющая “тагить” любой обьект проекта. Мало того, данная статья абсалютно расходиться с официальной документацией к этому плугину.

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