Freeze is cool, или как не всё пошло гладко с версией 1.1

Статейка о Ruby on Rails “Freeze is cool, so freeze for goodness sake” и обновлении провайдеров хостинга до версии 1.1 оказались не столь весёлыми и лёгкими, как ожидалось (обещалось). А вся проблема была в том, что на хостинге используется одна, общая версия Ruby on Rails для всех (если вы не “заморозились”), и если вы не сделали хотябы “rake freeze_gems” для своего проекта, кой-чего могло сломаться. Говорят у многих отказал “Typo”. Да, не все Gem совместимы с версией 1.1 (об этом предупреждали), поэтому, после обновления до версии 1.1 у многих что-то перестало работать из того, что работало с версией 1.0. Об этом и том, как разрабатывать проекты для разделённого хостинга (shared hosting) предупреждали ещё, оказывается, 22 декабря 2005 года: Freezing your Rails when you deploy shared. Так что, перед загрузкой своего проекта на рабочий сервер, сделайте “заморозку” версии Ruby on Rails для этого проекта, в противном случае, вас могут ждать не приятные сюрпризы. Вывод: С Ruby on Rails “отморозком” быть приятно и полезно.

Вот что от себя добавлю: я, как начинающий рельсоукладчик, до данного момента не знал, как с новым проектом, на хостинг перенести gem acts_as_taggable, и меня уже мучали смутные сомнения, о том смогу ли я и всё ли будет хорошо. Но ответ на эти вопросы я пока не искал. Нет проблемы перед лицом – я её не решаю. А зачем её решать сейчас, если она неизбежно возникнет в будущем? Вот тогда я её и буду решать. Проблема пока ещё не возникла, а решение уже нашлось. Вот уже в который раз, моя лень решает проблему быстро и безболезненно, даже с огромными плюсами. Но не все потенциальные проблемы можно так решать…

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ы, методы основных классов. Для начинающих вполне хорошая подсказка.