34

在 Python 世界中,有许多可供选择的 Python 解释器添加了很酷的附加功能。一个特别有用的示例是 bpython,它添加了动态语法突出显示、自动拉取文档并显示实时自动完成信息。在 Ruby 世界中,我还没有发现任何添加到基本 IRB 解释器的项目,甚至是这些功能的一个子集。是我看起来不够努力,还是这只是 Ruby 社区缺乏的东西?

4

9 回答 9

35

Use Pry: https://github.com/pry/pry

Let's you:

  • start sessions at runtime
  • view method source code
  • view method documentation (not using RI so you dont have to pre-generate it)
  • pop in and out of different contexts
  • syntax highlighting
  • gist integration
  • view and replay history
  • open editors to edit method using edit-method obj.my_method syntax

A tonne more great and original features

于 2011-04-28T01:50:32.430 回答
29

多么巧合。Rubyflow昨天刚刚发布了irbtools gem,这是一个包含许多很酷的 irb 增强 gem 的元 gem。它包含:

  • wirb着色并输出为评论fancy_irb
  • 不错的 IRB 提示和 IRB 的自动缩进
  • 包括 stdlib 的 FileUtils: ls, cd, pwd, ln_s, rm, mkdir, touch,cat
  • 许多调试助手:ap, q, o, c, y, Object#m,Object#d
    • ap– 真棒打印
    • q– 像p,但在一行
    • Object#m– 有序方法列表(采用整数参数:嵌套级别)
    • Object#d– 放置对象,返回自身(使用tap
  • “神奇”的信息常数:Info, OS, RubyVersion, RubyEngine
    • OS.windows?
    • RubyEngine.jruby?
    • RubyVersion.is.at_least? 1.9
  • 剪贴板功能:copypaste
    • 也可用:copy_inputcopy_output会话历史
  • 调用vim(或其他支持的编辑器)来编辑文件,关闭它,它会被加载到你当前的 irb 会话中,由interactive_editor
  • 另一种实时加载到 irb 的方式:草图
  • 突出显示带有 的字符串olorize('string')或带有 的文件ray('path'),由 coderay 提供支持
  • 将 ActiveRecord 数据库条目显示为表hirb
  • irb使用方法重新启动reset!或更改 Ruby 版本uservm!
  • 在加载路径中包含当前目录(出于安全原因在 1.9.2 中已删除,但在 IRB 中非常烦人)
  • 更短的要求是这样的:rq:mathn
  • 并要求rrq
  • 尝试包含的Object#ri助手,由ori
  • boson使用- call commands to get started访问更多命令

irbtools页面上有很好的屏幕截图。关于它的一个好处是每个实用程序都可以独立存在,以防您只想挑选一两个功能。

2013 更新

自从我写这篇文章以来,Pry已经成为一个流行的 IRB 替代品。它没有irbtools开箱即用的功能,但它可以通过添加很酷功能的插件 gem 进行扩展。您可以像浏览 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 文档,发出 shell 命令,如果您是 Rails 用户,则可以使用pry-railsgem 在 Rails 控制台中获取信息。还有一种方法可以将它连接到 Sinatra 并与 Heroku 一起使用。

有充足的文档——有很多截屏视频,包括 Railscast。这绝对值得研究。

于 2010-10-07T20:10:16.147 回答
3

我从未听说过 IRB 的(流行)替代品,但肯定有几个有用的宝石可以让 IRB 体验更好:

  • awesome_print漂亮地打印带有缩进和着色的 Ruby 对象,在尝试查看嵌套散列或其他复杂数据结构时非常有用。
  • looksee也非常棒,它提供了一个方法lp(查找路径),可以显示 Ruby 对象从哪里获取方法(类、超类等)。
  • Sketches将您的编辑器和 IRB 连接起来,因此如果您是喜欢交互式开发的类型,它特别有用。Emacsinf-ruby也适用于此。
  • Wirble是一整套 IRB 增强功能,如制表符补全和语法高亮。还有Utility Belt,但我个人不使用它,所以无法评论它的功能。

编辑

我忘记了Hirb,它对于在 Rails 控制台中显示 ActiveRecord 查询的结果非常有用。

于 2010-10-07T19:11:23.080 回答
2

JRuby 附带jirb_swing提供代码完成功能。

于 2010-10-07T19:41:48.863 回答
2

http://github.com/alloy/dietrb

于 2010-10-07T18:59:27.460 回答
1

查看ripl,这是一种模块化的 irb 替代方案,设计为可扩展。您还可以从Is there something like bpython for Ruby 中得到一些答案?.

于 2010-10-07T19:39:03.123 回答
1

irb 的替代品领域并不多,但是有一些宝石可以为 irb 添加有用的功能。

最值得注意的是wirble,除其他外,它为您提供彩色输出(虽然不是输入)和超出当前会话的历史记录。

于 2010-10-07T18:40:14.600 回答
0

我制作了一个纯 Ruby 控制台,灵感来自 Google Chrome 的 JavaScript 控制台。

https://github.com/sancarn/RubyConsole

它仍然主要是一个 WIP 项目,因为我一直在寻找当前算法的错误,但是我正在构建它以兼容 1.9.3+。

于 2018-06-22T08:54:53.770 回答
0

rib是一个模块化的轻量级 Ruby 交互式 shell。

它和 Pry 一样,使用 Ruby 的解析器,因此具有与 Ruby 一致的行为,因此错误更少(例如https://stackoverflow.com/a/39271791/474597

它是模块化的,因此可以轻松地扩展它以提供更多功能。

截至 2016 年,它也仍在积极维护中。

于 2016-12-29T06:19:05.213 回答