При работе с Rails-приложениями довольно много времени я провожу в консоли. Стандартный функционал, предоставляемый IRB по умолчанию, не сказать чтобы шибко богат. Вчера нашлось у меня немного свободного времени, чтобы улучшить свое скромное житие-бытие.
Настройки IRB-консоли задаются в файле .irbrc в домашней директории пользователя. Это по сути обычный ruby-файл, в нем можно подключать различные gem-ы, добавлять методы и т.д.
Вот несколько маленьких трюков для улучшения стандартной консоли, которые мне удалось раскопать (итоговый файл конфигурации см. в конце статьи):
- wirble – добавляет посветку в стандартный вывод IRB и добавляет поддержку истории выполнения команд
- awesome_print – позволяет выводить объекты на экран в удобном формате и с подсветкой. Использование в консоли:
ap this_is_my_object
- looksee – позволяет посмотреть список методов объекта, разбитый по классам/модулям, из которых эти методы происходят. Очень удобно при исследовании внутренностей классов и модулей фреймворка при отладке или разработке плагинов. Использование в консоли:
lp this_is_my_object
- Вывод лога SQL-запросов в консоль – при работе с моделями
ActiveRecordвсе запросы к БД будут выводиться прямо на экран:show_log # включаем логи hide_log # выключаем логи
- Замер скорости выполнения кода:
time { ... } # Код выполнится 1 раз time(100) { ... } # Код выполнится 100 раз
- Выполнение SQL-запроса:
sql "SELECT count(*) FROM users"
Надо сказать, работать в консоли стало в разы удобнее.
Итоговый файл .irbrc можно взять здесь
А вы используете какие-нибудь дополнения для IRB-консоли?

Есть еще http://rubygems.org/gems/hirb — очень удобно, в виде табличек, отображает обьекты ОРМ. Поддерживает ActiveRecord, DataMapper, MongoMapper и еще наверное с десяток мапперов.
Я использую hirb для наглядного вывода большого количества объектов типа Post.all
Как-то в одном из рейлскастов Райан показывал Hirb: http://github.com/cldwalker/hirb
enable_log # включаем логи disable_log # выключаем логи
Здесь опечатка, – д.б. showlog и hidelog соответственно
Ptico, Александр, DM,
hirb мне показался неудобным, awesome_print гораздо удобнее.
elv, Да, действительно, спасибо. Поправил.
Полностью согласен с Dekart ;-)
class Object # Return a list of methods defined locally for a particular object. Useful # for seeing what it does whilst losing all the guff that’s implemented # by its parents (eg Object). def local_methods(obj = self) (obj.methods - obj.class.superclass.instance_methods).sort end
end
Большое спасибо. Особенно про showlog и hidelog. Очень удобно получается. А то раньше как-то когда надо было видеть запросы, то использовал “tail -f файл_лога” и приходилось переключаться на соседнюю консоль. А вот так намного удобнее конечно. Спасибо! =)
Я сейчас тоже использую hirb для вывода табличек, но awesome_print пожалуй попробую. wirble тож использую
здорово, спасибо
А что использовать для корректного отображения кириллицы в irb?
irb’ом я пользуюсь редко, особенно для рельс. Обычно в него пишешь какую-нибудь небольшую проверку чего-либо, и часто это приходится делать много раз, поэтому я пишу rake, а результат часто сохраняю в текстовый файл. Что же до самой консоли, то здесь я использую усовершенствования, а именно zsh. Тот же rake и т.п. становятся в гораздо удобнее. Однажды я хочу сделать полное автозаполнение для merb, но пока руки не доходят.
Очень полезные фишки. Спасибо :)
awesomeprint и правда хорош, теперь не придется руками добавлять “y”(toyaml)