Ruby 在pry中执行带前导句点的语句
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
的命令解释为系统命令,并将其传递给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(“”)
有办法解决这个问题吗?我同意以下任何一项:
- 仅当前面没有前导空格时,才将
解释为系统命令 - 将系统命令更改为其他模糊分隔符,而不是
- 最后:系统命令被完全禁用-这不是我经常使用的功能
config.command\u prefix
属性(默认情况下为空字符串“”
),这将使您需要在需要使用系统命令时添加新的command\u prefix
pry(main)>pry.config.command_prefix=“%”
=> "%"
撬(主)>ls-l
NameError:未定义的局部变量或main:Object的方法“l”
from(pry):2:in`'
撬(主)>%ls
本地人:uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文件目录_
撬动(主)>
如中所述,您有两个选项:
config.command\u prefix
属性(默认情况下为空字符串“”
),这将使您需要在需要使用系统命令时添加新的command\u prefix
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)>