Category Archives: Ruby and Rails

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

Они сговорились, да? Обновления у Prototype.js, script.aculo.us, Zend Framework и Ruby on Rails

Неделя полна новостей: новый сайт Prototype.js + версия 1.5.0, script.aculo.us 1.7.0 с новым и сильно анонсированным эффектом Morph. Надо в понедельник будет обновить текущие проекты и посмотреть, как будет работать в Opera, FireFox, IE6, IE7.

Zend выпустил Zend Framework Preview 0.7.0, чесно говоря, я ожидал что Zend будет быстрее его разрабатывать.

Ilia Alshanetsky анонсировал выход PHP 5.2.1 RC3.

А 37signals с командой разработчиков выпустил Ruby on Rails 1.2 – все акцентируют REST, вот бы знать, что это и как это едят (я в данный момент далёк от RoR). Говорят они победили проблемы с UTF-8 и обновили библиотеки Prototype.js до версии 1.5. Эх, хочется усесться в этот локомотив и катить с ним, но можно быть средним RoRовцем или быть хорошим PHPистом с уклоном на администрирование и load-balancing решения (PHP проектов).
Кстати, надо написать памятки по установки CentOS 4 с ServerCD, а то эту операцию я делаю не слишком часто, а может ещё и пригодиться.

Кстати, вышел WordPress 2.0.7 – они настоятельно рекомендуют обновиться, и это через 6 дней после выхода WordPress 2.0.6.

Об изобретении велосипедов на PHP и клонах

Берём Rails, долго на них смотрим и изучаем. Даже несколько внутренних проектов делаем. Приятно, удобно, но! В результате надобности интегрироваться в старые проекты на PHP, в результате желаний клиента что-то с чем-то совместить, мы всё равно берём PHP (так как кругом всё упорно на PHP… Одно PHP у нас даже кто-то Rails с phpNuke сравнивал). Жаль… да? А вот и нет! Берём наработки, скопившиеся в закромах мозга в течении 5 лет. Берём знание по PHP 4, серверочек для разработок и за дня два собираем маленький, лёгкий клон Rails под один проект (а кто знает что будет потом). Да, не такой навороченный, да, не такой отттестированный, но он позволяет нам в течении нескольких дняй без особого программирования и не писания запросов складывать несколько десятков форм с максимальной отдачей. Приятно. Rails – супер! Даже как муза, как источник для вдохновления и подражания. Пусть там overloading через одно место с массивами, пусть там вместами запросы не совсем оптимизированны – но большая половина рутины уже сделана один раз. Мне нравиться, мне удобно… А показать… Вот не знаю… Может однажды – не могу обещать – оно не мне пренадлежит.

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

Экспорт файлов от ревизии А до ревизии Б

Извечная моя проблема: есть проект в репозитории, его экспорт лежит на боевом сервере, в репозиторий делают определённое кол-во коммиротв, и есть нужда обновить боевой сервер. Делать экспорт из репозитория и заливать всё на сервер заново занимает слишком много времени, а чек-аут слишком много места на сервере. Репозиторий не даёт встроенной возможности сделать экспорт только изменённых файлов. Я сделал своё решение: Экспорт файлов из Subversion от ревизии А до ревизии Б

@params или params и нововведения с yield

О как… Вот взяли и отменили @params в Ruby on Rails. А что им стоит отменить?. Нет, ну оно осталось, но, как-бы не рекомендуется. То, что мы конкретные грабли всем подложили – мало кого теперь волнует. А ведь примеры в сети будут с @params наверняка валяться, книга у них тоже содержит @params… Почему они сами об этом ещё тогда не подумали? Что это что-то поломает… Вроде они как бы создатели… Они вообще не рекомендуют использовать instance variable ни в controller ни в view… Согласно всему @content_for_layout deprecated и теперь надо использовать yield, за исключением тех случаев, если instance variable инициализируем мы сами. Причём, то что по их мнению является тривиальным, для меня совсем не тривиально…

Ruby on Rails 1.1.1

А всё-таки Ruby on Rails выпустили версию 1.1.1. А ведь говорили, что нет, нет, у нас не будет 1.1.1: Lots of options, no excuses. We really need your help to make sure the final release is as solid as Rails 1.0 was. And so we don’t need 1.1.1 two days later., да это не two days later, а целый 9 дней, но факт – 1.1.1 был и очень скоро.

Обратнуя сторона полиморфических ассоциаций с использованием :through

Josh Susser описал обратную сторону полиморфических ассоциаций с использованием :through у Ruby on Rails. Обратная сторона всего этого дела заключается в том, что вся эта красота и удобство работает в одном направлении. В статье прекрасные примеры как оно работает, и как оно не работает, а так-же решение самой проблемы обратной связи. Точнее одно из возможных решений.

Мда, лень и желание поспать – пару дней назад я бился над этой проблемой, но желание спать победило – утром надо было на работу, и проект был лично-обучательного характера.

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, и меня уже мучали смутные сомнения, о том смогу ли я и всё ли будет хорошо. Но ответ на эти вопросы я пока не искал. Нет проблемы перед лицом – я её не решаю. А зачем её решать сейчас, если она неизбежно возникнет в будущем? Вот тогда я её и буду решать. Проблема пока ещё не возникла, а решение уже нашлось. Вот уже в который раз, моя лень решает проблему быстро и безболезненно, даже с огромными плюсами. Но не все потенциальные проблемы можно так решать…

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 писать.