Rubyアプリケーションプログラミング

Rubyアプリケーションプログラミング

Rubyアプリケーションプログラミング

サンプルプログラムで喰らったエラーなどをメモしておきます。動作環境は

ex03-2.rb (p.82)

#!/usr/bin/ruby

word = ['print ', '"', 'Hello ', 'World', '\n', '"']
tmp = 'ex03-2a'
file = []
(word.size + 1).times { # word から対応するファイル名を生成
  file << tmp + '.rb'; tmp = tmp.succ
}

# 自分が何番目のファイルであるか
i = file.index(File.basename(ENV['SCRIPT_NAME']))

action = file[i + 1]                         # 次に呼び出すスクリプト名

InternalServerErrorが発生

:13: undefined method `+' for nil:NilClass (NoMethodError)

デバッガで見るとiの中身がnullになっているのがわかった。ファイル名がex03-2.rbなのにtmpで代入しているのがex03-2aなのがまずいらしい。さらに、付録CDROMにはex03-2a.rb,ex03-2bなどsuccで生成されるファイルが用意されていない。このサンプルプログラムは実行せずに、ソースを眺める用のものと理解。