Загрузка...

Ruby & Rails: веб-разработка с удовольствием

Ruby on Rails — фреймворк для создания веб-приложений. Является открытым программным обеспечением (лицензия MIT). Здесь мы обсуждаем новости RoR, делимся учебными материалами и интересными находками С RoR даже сложные веб-приложения могут быть написаны за считанные дни. Это действительно разработка с удовольствием!
     

Rails Console

11.02.09, 16:04
Автор mshakhan

Наверное, все разработчики на Rails используют консоль, или хотя бы слышали о ней. Запускается она из папки проекта:

./script/console

На самом деле, консоль Rails - не что иное, как простой irb (Interactive Ruby - интерактивный интерпретатор Руби), в который подгружено окружение нашего проекта.

В основном консоль используется для отладки приложений.

В этом посте я хочу рассказать о некоторых интересных особенностях консоли Rails и irb в общем.

Режим “песочница”

Если нам нужно проверить что-то на рабочей базе, либо при наших дейсвиях возможно сильно испортить существующие данные, нам нужна возможность отката всех наших действий после выхода из консоли. И она у нас есть! Это и называется режимом “песочница” и включается он указанием параметра —sandbox при запуске консоли:

./script/console --sandbox

Читабельный вывод атрибутов модели

Как известно, для вывода на консоль содержимого какого-либо объекта в irb используется метод inspect. При выводе коллекции моделей это не сильно помогает, так как все атрибуты начинают рябить в глазах. Можно упростить себе жизнь, используя метод “y”. Запись

y my_model

Эквивалентна

my_model.to_yaml

То есть мы получаем модель, сериализованную в YAML, что заметно улучшает читабельность.

Если же вас не устраивает и это, то ничто не мешает переопределить метод inspect для ActiveRecord. Сделать это можно в файлике ~/.irbrc (если его нет - нужно создать). Это файл выполняется каждый раз при запуске irb и содержит обычный руби-код. То есть нам нужно поместить туда что-то вроде

class ActiveRecord::Base
def inspect
# тут ваш код
end
end

Лог в консоль

Иногда нужно знать какие запросы к базе данных делаются при вызове того или иного метода (особенно полезно при обучении и отладке кода). Как известно, выводом всяческой информации заведует экземпляр класса Logger, находящийся в классе ActiveRecord::Base. Следовательно,

 

ActiveRecord::Base.logger = Logger.new(STDOUT)

даёт нам желаемый результат. Можем при необходимости также положить эту строчку в ~/.irbrc

Комментарии

Используя .irbrc можно хорошенько затьюнить консоль. Вот несколько примеров:

1. http://errtheblog.com/posts/24-irb-mix-tape
2. http://errtheblog.com/posts/41-real-console-helpers
3. http://snippets.dzone.com/posts/show/2916
4. http://www.ruby-forum.com/topic/84414

Было бы здорово собрать воедино лучшее без конфликтов и прикрепить к этому посту правильный .irbrc файл.

Войдите, чтобы оставить комментарий