在python世界中,有许多替代python解释器可以添加很酷的附加功能。一个特别有用的示例是bpython,它添加了动态语法突出显示,自动提取文档,并显示实时自动完成信息。在Ruby世界中,我还没有发现任何添加到基本IRB解释器的项目,甚至是这些功能的一部分。我只是不够努力,或者这只是Ruby社区缺乏的东西?
答案 0 :(得分:33)
使用Pry:http://pry.github.com
让我们:
edit-method obj.my_method
语法一种更好的原创功能
答案 1 :(得分:29)
多么巧合。 Rubyflow昨天宣布了irbtools宝石,这是一个包含大量酷炫irb增强宝石的元宝石。它包含:
wirb
和fancy_irb
ls
,cd
,pwd
,ln_s
,rm
,mkdir
,touch
,{ {1}} cat
,ap
,q
,o
,c
,y
,Object#m
Object#d
- awesome_print ap
- 与q
类似,但在一行p
- 有序方法列表(采用整数参数:嵌套级别)Object#m
- 放置对象,返回self(使用Object#d
)tap
Info, OS, RubyVersion, RubyEngine
OS.windows?
RubyEngine.jruby?
RubyVersion.is.at_least? 1.9
和copy
paste
和copy_input
用于会话历史记录copy_output
(或其他受支持的编辑器)编辑文件,关闭它并将其加载到当前的irb会话中,由vim
interactive_editor
的字符串或带有olorize('string')
的文件,由coderay提供支持ray('path')
hirb
重新启动irb
或使用reset!
方法和use
rvm!
rq:mathn
rrq
支持的Object#ri
帮助器ori
访问更多命令 - 调用命令以开始使用irbtools页面上有很好的截图。关于它的一个好处是,每个实用程序都可以独立存在,以防您只想挑选一个或两个功能。
2013年更新
自从我写这篇文章以来,Pry已经成为一个受欢迎的IRB替代品。它没有开箱即用boson
那么多,但它可以通过添加很酷功能的插件宝石进行扩展。您可以浏览源代码,就像它是一个unix目录:
irbtools
您还可以浏览Ruby文档,发出shell命令,如果您是Rails用户,则可以使用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>
gem在Rails控制台中获取pry。还有一种方法可以将它连接到Sinatra并与Heroku一起使用。
有足够的文档 - 有很多截屏视频,包括Railscast。这绝对值得研究。
答案 2 :(得分:3)
我从来没有听说过IRB的(流行的)替代方案,但肯定有一些有用的宝石可以让IRB体验更好:
lp
(查找路径),它显示了Ruby对象从哪里获取方法(类,超类等)。inf-ruby
的Emacs对此也很有用。修改强>
我忘了Hirb,这对于例如在Rails控制台中显示ActiveRecord查询的结果。
答案 3 :(得分:2)
答案 4 :(得分:2)
JRuby附带jirb_swing
,提供代码完成。
答案 5 :(得分:1)
irb的替代品领域并不多,但有一些宝石为irb添加了有用的功能。
最引人注目的是wirble,除其他外,它为您提供彩色输出(不输入)和超出当前会话的历史记录。
答案 6 :(得分:1)
查看ripl,这是一种可扩展的模块化irb替代方案。您也可以从Is there something like bpython for Ruby?获得一些答案。
答案 7 :(得分:0)
rib是一个模块化且轻巧的Ruby交互式shell。
它和Pry一样,使用Ruby的解析器,因此与Ruby具有一致的行为,从而减少了错误(例如https://stackoverflow.com/a/39271791/474597)
它是模块化的,因此可以使用更多功能轻松扩展它。
截至2016年,它仍然在积极维护。
答案 8 :(得分:0)
我制作了一个纯Ruby控制台,灵感来自Google Chrome的JavaScript控制台。
https://github.com/sancarn/RubyConsole
由于我仍在使用当前算法查找错误,因此它仍然主要是一个WIP项目,但是我将其构建为与1.9.3+兼容。