Какие существуют альтернативы IRB?
Вопрос
В мире Python существует множество альтернативных интерпретаторов python, которые добавляют интересные дополнительные функции.Одним из особенно полезных примеров является bpython, который добавляет динамическую подсветку синтаксиса, автоматически извлекает документацию и отображает информацию о автозаполнении в реальном времени.В мире Ruby мне еще предстоит обнаружить какие-либо проекты, которые добавляют к базовому интерпретатору IRB хотя бы подмножество этих функций.Я просто недостаточно внимательно смотрю, или это просто то, чего не хватает сообществу Ruby?
Решение
Какое совпадение. Rubyflow Просто вчера объявил irbtools GEM, который представляет собой мета-драгоценный камень, содержащий множество крутых усовершенствованных драгоценных камней IRB. Это содержит:
- Раскрашены и вывод как комментарий
wirb
иfancy_irb
- Хорошая подсказка IRB и автомагистрация IRB
- Включает FileTils STDLIB:
ls
,cd
,pwd
,ln_s
,rm
,mkdir
,touch
,cat
- Многие благодаря отладке помощников:
ap
,q
,o
,c
,y
,Object#m
,Object#d
ap
- Awesome_Print.q
- нравитсяp
, но на одной линииObject#m
- Заказанный список методов (принимает целочисленный параметр: уровень вложенности)Object#d
- помещает объект, возвращает себя (используяtap
)
- «Волшебные» информационные константы:
Info, OS, RubyVersion, RubyEngine
OS.windows?
RubyEngine.jruby?
RubyVersion.is.at_least? 1.9
- Особенности буфера обмена:
copy
иpaste
- также доступны:
copy_input
иcopy_output
Для истории сессии
- также доступны:
- Вызов
vim
(или другой поддерживаемый редактор) для редактирования файла, закройте его, и он загружается в ваш текущий сеанс IRB, питается отinteractive_editor
- Еще один способ вживую загрузку в IRB: эскизы
- Выделите строку с
olorize('string')
или файл сray('path')
, питание от CodeRay - Отображает записи базы данных ActiveRecord в качестве таблиц с
hirb
- Начать сначала
irb
сreset!
или изменить версию Ruby сuse
метод иrvm!
- Включает в себя текущий каталог в пути нагрузки (был удален в 1.9.2 по соображениям безопасности, но довольно раздражает в IRB)
- Короче, требующее, как это:
rq:mathn
- И повторно
rrq
- Попробуйте включить
Object#ri
помощник, включенныйori
! - Доступ к большому количеству команд с
boson
- Вызовите команды, чтобы начать
Есть хорошие скриншоты на irbtools страница. Одна приятная вещь в этом заключается в том, что каждый из утилит может стоять самостоятельно, если вы просто хотите выбирать одну или две функции.
2013 Обновление
Так как я написал это, Преследовать стал популярным заменой IRB. Это не так много, как irbtools
Из коробки, но это расширяется с помощью плагинов драгоценных камней, которые добавляют классные функции. Вы можете просматривать исходный код, как будто это был каталог Unix:
pry(main)> cd FileUtils
pry(FileUtils):1> show-method rm
From: /opt/ruby/lib/ruby/1.9.1/fileutils.rb @ line 556:
Number of lines: 10
Owner: FileUtils
def rm(list, options = {})
fu_check_options options, OPT_TABLE['rm']
list = fu_list(list)
fu_output_message "rm#{options[:force] ? ' -f' : ''} #{list.join ' '}" if options[:verbose]
return if options[:noop]
list.each do |path|
remove_file path, options[:force]
end
end
pry(FileUtils):2>
Вы также можете просматривать Ruby Documentation, выпускать команды Shell, и если вы являетесь пользователем Rails, вы можете использовать pry-rails
Gem, чтобы получить PRY в вашу консоль Rails. Также есть способ подключить его в Синатру и использовать его с Heroku.
Есть достаточная документация - есть куча скринкастов, включая железнодорожный пост. Это определенно стоит посмотреть.
Другие советы
Используйте PRY: http://pry.github.com.
Давайте вам:
- Начать сеансы во время выполнения
- Просмотр метода исходный код
- Просмотр метода документации (не используя RI, чтобы вам не приходится предварительно генерировать)
- Поп и из разных контекстов
- Синтаксис выделения
- Гистовая интеграция
- История просмотра и воспроизведения
- Открытые редакторы для редактирования метода с использованием
edit-method obj.my_method
синтаксис
Тонна более великих и оригинальных функций
Я никогда не слышал о (популярной) альтернативе IRB, но наверняка есть несколько полезных драгоценных камней, которые делают опыт IRB намного приятнее:
- awesome_print. Довольно печатает объекты Ruby с углублением и окрашиванием, очень полезны при попытке посмотреть на вложенные хэши или другие сложные структуры данных.
- Смотреть видеть тоже довольно круто, он обеспечивает метод
lp
(Путь поиска), который показывает вам, где ruby-объект получает свои методы (класс, суперкласс и т. Д.). - Эскизы Подключает ваш редактор и IRB, так что это особенно полезно, если вы являетесь тем, кто любит интерактивное развитие. Степень
inf-ruby
также хорошо для этого. - Проворачиваться является целым набором улучшений IRB, например, завершение вкладки и выделение синтаксиса. Есть также Утилита ремня, но я не использую это, поэтому не могу прокомментировать свои особенности.
Редактировать
Я забыл Гирб, который очень полезен, например, показывает результаты запроса ActiveRecord на консоли Rails.
JRuby корабли с jirb_swing
, который обеспечивает завершение кода.
В области альтернатив в IRB не так много нет, но есть пара драгоценных камней, которые добавляют полезные функции в IRB.
В частности, проворачиваться, который, помимо прочего, дает вам цветной выход (не вводится, хотя и история, которая выходит за пределы текущего сеанса.
Проверить раковина, модульная альтернатива IRB, которая предназначена для расширения. Вы также можете получить ответы от Есть что-то вроде bpython для Ruby?.
ребро представляет собой модульную и легкую интерактивную оболочку Ruby.
Он, как и Pry, использует синтаксический анализатор Ruby, поэтому имеет согласованное поведение с Ruby, следовательно, меньше ошибок (например https://stackoverflow.com/a/39271791/474597)
Он модульный, поэтому его можно легко расширить за счет дополнительных функциональных возможностей.
Он также по-прежнему активно поддерживается по состоянию на 2016 год.
Я сделал чистую рубиновую консоль, вдохновляющую у консоли JavaScript Google Chrome.
https://github.com/sancarn/rubyconsole.
Это все еще в основном проект WIP, когда я продолжаю поиск ошибок с текущим алгоритмом, однако я строю его на 1,9.3+ совместимым.