我喜欢在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中也会出现错误,但堆栈跟踪当然有点不同。
这是一个错误,对吗?人们会认为不合适的配置设置会更优雅地处理,至少在更高级别报告错误的性质,以便用户知道如何解决它。或者可以说,在不存在的提示中指定缩进是开发人员的错?
- 基思
答案 0 :(得分:0)
这不是错误。
如果您希望在特殊情况下忽略.irbrc
文件(例如当您需要--noprompt
时),那么您可能还希望提供-f
标志以禁止加载您的.irbrc
文件。
在提供矛盾的选项时,你会遇到问题。
TLDR;
irb -f --noprompt