0

我有时喜欢在 irb 上使用 --noprompt 选项,尤其是当我可能想从中复制代码并将其粘贴到其他地方时。但是,当 .irbrc 文件中出现以下内容时会发生错误:

IRB.conf[:AUTO_INDENT] = true

irb启动时出现如下错误:

/Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:280:in `dup': can't dup NilClass (TypeError)
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:280:in `prompt'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:129:in `block in eval_input'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/ruby-lex.rb:206:in `call'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/ruby-lex.rb:206:in `prompt'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/ruby-lex.rb:220:in `initialize_input'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb/ruby-lex.rb:227:in `each_top_level_statement'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:155:in `eval_input'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:70:in `block in start'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:69:in `catch'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/irb.rb:69:in `start'
from /Users/keithb/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `<main>'

在 JRuby 中也会出现该错误,但堆栈跟踪当然有点不同。

这是一个错误,对吧?人们会认为不适当的配置设置会得到更优雅的处理,至少会在更高级别报告错误的性质,以便用户知道如何解决它。或者是否可以争辩说在不存在的提示上指定缩进是开发人员的错?

——基思

4

1 回答 1

0

这不是错误。

如果您希望.irbrc在特殊情况下忽略文件(例如当您需要时--noprompt),那么您可能还希望提供-f标志来禁止加载.irbrc文件。

提供相互矛盾的选项时,您将正确地遇到问题。

TLDR;

irb -f --noprompt

于 2012-11-16T22:38:56.190 回答