交互式Ruby子shell有什么意义?

时间:2013-05-03 18:47:02

标签: ruby shell terminal irb

在终端('irb')中启动交互式Ruby shell,可以继续无休止地打开irb子shell。这有什么意义呢?

1 个答案:

答案 0 :(得分:7)

到目前为止,我已经看到了三个有用的事情,我们可以为你做的事情:

  1. 取消定义局部变量
  2. 更改irb会话的self
  3. irb是一套优秀工具的一部分
  4. 取消定义局部变量

    嵌套的irb启动一个新的子会话,其中不再定义所有局部变量(不是类,模块等)。

    irb(main):001:0> a = 1
    #=> 1
    irb(main):002:0> irb
    irb#1(main):001:0> a
      NameError: undefined local variable or method `a' for main:Object from (irb#1):1
    

    更改self以进行irb会话

    irb(main):001:0> self
    #=> main
    irb(main):002:0> irb "Hello World"
    irb#1(Hello World):001:0> self
    #=> "Hello World"
    irb#1(Hello World):002:0> length
    #=> 11
    

    注意:这也称为irb会话的“更改绑定”。

    顺便说一下:可以在不打开子句点的情况下更改绑定(cbirb_change-binding都可以为您执行此操作)。但是通过subsession回到旧的绑定会更方便。

    最好的是,irb只是一组有用的命令之一

    • irb:开始一个新的分会
    • jobs:列出子会话
    • fg:切换到subsession
    • kill:杀死一个次级

    有关详细信息,请参阅this insteresting SO answer