Ruby 在pry中执行带前导句点的语句

Ruby 在pry中执行带前导句点的语句,ruby,read-eval-print-loop,irb,pry,Ruby,Read Eval Print Loop,Irb,Pry,Pry将带有前导的命令解释为系统命令,并将其传递给shell。但是,这会阻止我使用在我的代码中非常常见的具有前导的行执行代码块 在IRB中,类似于以下内容的操作很好: 2.2.3 :001 > begin 2.2.3 :002 > "hello world" 2.2.3 :003?> .split(" ") 2.2.3 :004?> .map(&:upcase) 2.2.3 :005?> end => ["HELL

Pry将带有前导
的命令解释为系统命令,并将其传递给shell。但是,这会阻止我使用在我的代码中非常常见的具有前导
的行执行代码块

在IRB中,类似于以下内容的操作很好:

2.2.3 :001 > begin
2.2.3 :002 >     "hello world"
2.2.3 :003?>       .split(" ")
2.2.3 :004?>       .map(&:upcase)
2.2.3 :005?>   end
 => ["HELLO", "WORLD"]
然而,在Pry中:

[6] pry(#<MailFetcherService>)> begin
[6] pry(#<MailFetcherService>)*   "hello world"
[6] pry(#<MailFetcherService>)*   .split(" ")
sh: -c: line 0: syntax error near unexpected token `" "'
sh: -c: line 0: `split(" ")'
Error: there was a problem executing system command: split(" ")
[6]撬动(#)>开始
[6] pry(#)*“你好,世界”
[6] 撬(#)*.split(“”)
sh:-c:第0行:意外标记“%1”附近出现语法错误
sh:-c:第0行:`split(“”)
错误:执行系统命令时出现问题:split(“”)
有办法解决这个问题吗?我同意以下任何一项:

  • 仅当前面没有前导空格时,才将
    解释为系统命令
  • 将系统命令更改为其他模糊分隔符,而不是
  • 最后:系统命令被完全禁用-这不是我经常使用的功能
如中所述,您有两种选择:

  • 您可以在命令前面加上分号,这样Pry就会忽略它(在我看来,这很混乱)
  • 您可以更改
    config.command\u prefix
    属性(默认情况下为空字符串
    “”
    ),这将使您需要在需要使用系统命令时添加新的
    command\u prefix
  • #2的示例:

    pry(main)>pry.config.command_prefix=“%”
    => "%"
    撬(主)>ls-l
    NameError:未定义的局部变量或main:Object的方法“l”
    from(pry):2:in`'
    撬(主)>%ls
    本地人:uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文件目录_
    撬动(主)>
    
    如中所述,您有两个选项:

  • 您可以在命令前面加上分号,这样Pry就会忽略它(在我看来,这很混乱)
  • 您可以更改
    config.command\u prefix
    属性(默认情况下为空字符串
    “”
    ),这将使您需要在需要使用系统命令时添加新的
    command\u prefix
  • #2的示例:

    pry(main)>pry.config.command_prefix=“%”
    => "%"
    撬(主)>ls-l
    NameError:未定义的局部变量或main:Object的方法“l”
    from(pry):2:in`'
    撬(主)>%ls
    本地人:uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文件目录_
    撬动(主)>
    
    我的主要问题是尝试从我的代码库到REPL的代码块。如果我必须编辑单独的行,我可能会改变点的位置。设置命令前缀并不能解决我的问题。你能试试我问题中的例子吗?如果它有效,你正在使用的pry版本是什么。我已将其添加到我的
    .pryrc
    。。直接在REPL中执行也不起作用。是的,这不适用于以句点开头的行,这就是问题所在。我的主要问题是尝试从代码库到REPL的代码块。如果我必须编辑单独的行,我可能会改变点的位置。设置命令前缀并不能解决我的问题。你能试试我问题中的例子吗?如果它有效,你正在使用的pry版本是什么。我已将其添加到我的
    .pryrc
    。。直接在REPL中执行也不起作用。是的,这对以句点开头的行不起作用,这就是问题所在。
    pry(main)> Pry.config.command_prefix = "%"
    => "%"
    pry(main)> ls -l
    NameError: undefined local variable or method `l' for main:Object
    from (pry):2:in `<main>'
    pry(main)> %ls
    locals: _  _ex_  _pry_  _in_  _out_  _file_  _dir_
    pry(main)>