IRB有哪些替代品?

Der*_*urn 33 ruby irb

在python世界中,有许多替代python解释器可以添加很酷的附加功能.一个特别有用的示例是bpython,它添加了动态语法突出显示,自动提取文档,并显示实时自动完成信息.在Ruby世界中,我还没有发现任何添加到基本IRB解释器的项目,甚至是这些功能的一部分.我只是不够努力,或者这只是Ruby社区缺乏的东西?

hor*_*guy 33

使用Pry:http://pry.github.com

让你:

  • 在运行时启动会话
  • 查看方法源代码
  • 查看方法文档(不使用RI,因此您不必预先生成它)
  • 流入和流出不同的背景
  • 语法高亮
  • 要点整合
  • 查看和重播历史记录
  • 打开编辑器使用edit-method obj.my_method语法编辑方法

一吨更加伟大和原始的功能


Mar*_*mas 29

多么巧合.Rubyflow昨天宣布了irbtools宝石,这是一个包含大量酷炫irb增强​​宝石的元宝石.它包含:

  • 着色并输出为wirb和的注释fancy_irb
  • 好的IRB提示和IRB的自动缩进
  • 包括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- 放置对象,返回self(使用tap)
  • "神奇"的信息常数: Info, OS, RubyVersion, RubyEngine
    • OS.windows?
    • RubyEngine.jruby?
    • RubyVersion.is.at_least? 1.9
  • 剪贴板功能:copypaste
    • 也可用:copy_inputcopy_output会话历史记录
  • 调用vim(或其他受支持的编辑器)来编辑文件,关闭它并将其加载到当前的irb会话中interactive_editor
  • 另一种实时加载到irb的方式:草图
  • 用coderay强制显示带有olorize('string')或带有文件的字符串ray('path')
  • 将ActiveRecord数据库条目显示为表格 hirb
  • irb使用方法和重新启动reset!或更改Ruby版本uservm!
  • 包含加载路径中的当前目录(出于安全原因在1.9.2中删除了,但在IRB中非常烦人)
  • 更短的要求如下: rq:mathn
  • 并重新考虑 rrq
  • 尝试附带的Object#ri助手,由ori!提供!
  • 使用boson--call命令开始访问许多命令

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>
Run Code Online (Sandbox Code Playgroud)

您还可以浏览Ruby文档,发出shell命令,如果您是Rails用户,则可以使用pry-railsgem在Rails控制台中获取pry.还有一种方法可以将它连接到Sinatra并与Heroku一起使用.

有丰富的文档 - 有一堆的截屏,包括一个Railscast的.这绝对值得研究.

  • 这似乎已经过时了.下面提到的Pry已经获得足够的动力,它似乎是irb的首选替代品. (3认同)
  • 感谢指向Pry的指针.看起来不错!它与irbtools有着不同的关注点 - 它可以进行更多代码内省.我再也不会羡慕Python的REPL了.:)但是,我不认为irbtools是过时的,因为它已经更新为Rails 3,仍然适用于我. (3认同)
  • 更新的项目主页:https://github.com/janlelis/irbtools (2认同)