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 に答える