В мире python существует ряд альтернативных интерпретаторов python, которые добавляют интересные дополнительные функции. Одним из особенно полезных примеров является bpython, который добавляет подсветку динамического синтаксиса, автоматически вытягивает документацию и отображает живую информацию автозаполнения. В мире Ruby мне еще предстоит раскрыть любые проекты, которые добавляют к базовому интерпретатору IRB даже подмножество этих функций. Я просто не выгляжу достаточно сложно, или это просто то, чего не хватает в сообществе Ruby?
Какие альтернативы IRB существуют?
Ответ 1
Какое совпадение. Rubyflow только что вчера анонсировал irbtools gem, который представляет собой мета-жемчуг, содержащий множество прохладных драгоценных камней irb. Он содержит:
- Раскрашено и выводится как комментарий
wirb
иfancy_irb
- Хорошее приглашение IRB и автоматическое отключение IRB.
- Включает stdlibs FileUtils:
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
- помещает объект, возвращает self (используя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 году
Поскольку я написал это, Pry стал популярной заменой 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, выдавать команды оболочки, а если вы пользователь Rails, вы можете использовать драгоценный камень pry-rails
, чтобы получить доступ к вашей консоли Rails. Там также можно подключить его к Синатре и использовать его с Героку.
Существует достаточно документации - есть множество скринкастов, включая Railscast. Это определенно стоит изучить.
Ответ 2
Использовать Pry: http://pry.github.com
Позволяет вам:
- начать сеансы во время выполнения
- просмотреть исходный код метода
- просмотреть документацию метода (не используя RI, поэтому вам не нужно его генерировать)
- входить и выходить из разных контекстов
- подсветка синтаксиса Интеграция
- gist
- просмотр и воспроизведение истории
- открыть редакторы для редактирования метода с использованием синтаксиса
edit-method obj.my_method
Более тонкие и оригинальные функции
Ответ 3
Я никогда не слышал о (популярной) альтернативе IRB, но, безусловно, есть несколько полезных камней, которые делают IRB намного приятнее:
- awesome_print довольно печатает объекты Ruby с отступом и раскраской, очень полезно при попытке взглянуть на вложенные хэши или другие сложные структуры данных.
- looksee тоже очень классно, он предоставляет метод
lp
(путь поиска), который показывает вам, где объект Ruby получает свой методы из (класс, суперкласс и т.д.). - Sketches соединяет ваш редактор и IRB, поэтому он особенно полезен, если вы тип, которому нравится интерактивная разработка. Emacs с
inf-ruby
также хорош для этого. - Wirble - это целый набор улучшений IRB, таких как табуляция и подсветка синтаксиса. Там также Utility Belt, но я лично этого не использую, поэтому не могу комментировать его функции.
Edit
Я забыл Hirb, что очень полезно для, например, показывая результаты запроса ActiveRecord в консоли Rails.
Ответ 4
Ответ 5
JRuby отправляется с jirb_swing
, который обеспечивает завершение кода.
Ответ 6
В области альтернатив irb не так много, но есть несколько драгоценных камней, которые добавляют полезные функции для irb.
Наиболее заметно wirble, который, помимо прочего, дает вам цветной вывод (не вводный) и историю, которая выходит за рамки текущей сессии.
Ответ 7
Отметьте ripl, модульную альтернативу irb, которая предназначена для расширения. Вы также можете получить ответы от Есть ли что-то вроде bpython для Ruby?.
Ответ 8
rib - это модульная и легкая интерактивная оболочка Ruby.
Он, как и Pry, использует синтаксический анализатор Ruby, поэтому имеет последовательное поведение с Ruby, таким образом, меньше ошибок (например, fooobar.com/info/167919/...)
Он модульный, поэтому его можно легко расширить с большей функциональностью.
Он также по-прежнему активно поддерживается с 2016 года.