我有时喜欢在 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 中也会出现该错误,但堆栈跟踪当然有点不同。
这是一个错误,对吧?人们会认为不适当的配置设置会得到更优雅的处理,至少会在更高级别报告错误的性质,以便用户知道如何解决它。或者是否可以争辩说在不存在的提示上指定缩进是开发人员的错?
——基思