よくある質問
ここでは実習中に発生するであろう典型的な問題とその解決法を示します.
- 画面全体に時刻が大きく表示されている.どうしたらいい?
- 「command not found」というエラーが出る
- 「no such file or directory」というエラーが出る
- 「Invalid char ...」というエラーが出る
- 「syntax error, unexpected $end, expecting kEND」のようなエラーが出る.エラーの行がプログラムの最後の行である.
画面全体に時刻が大きく表示されている.どうしたらいい?
[Enter]を押すとパスワード入力画面が表示されます. パスワードを正しく入力すれば画面を復旧できます. なお時刻表示が開始された直後であれば,パスワードを入れなくても,復旧できることがあります.
仮想型端末をしばらく操作しないままにしておくと自動的に「ロック」がかかります. 画面に時刻が表示されているのはロックされている状態あるいはその直前の状態です.
「command not found」というエラーが出る
作ったファイルを直接実行しようとしていませんか. 必ずインタプリタ(ruby)を使って実行します.
$ foo.rb -bash: foo.rb: command not found $ ruby foo.rb
「no such file or directory」というエラーが出る
指定しているファイルが存在しません.ファイル名が間違っているか, ファイルをまだ保存していないか,別の場所にあるファイルを指定していませんか.
$ ruby bar.rb ruby: No such file or directory -- bar.rb (LoadError)
「Invalid char ...」というエラーが出る
たとえば次の3つのエラーが並んで出るときは,当該の行(例の場合は第14行)に日本語(全角)の空白文字があることを意味しています. 当該の行でカーソルを動かして日本語の空白文字を探して, 英数字(半角)の空白文字に書き換えてください.
$ ruby foo.rb foo.rb:14: Invalid char `\343' in expression foo.rb:14: Invalid char `\200' in expression foo.rb:14: Invalid char `\200' in expression
他にも英数字で書くべきところを日本語で書くと同様のエラーが発生します. 日本語を使えるのは,コメント(主に「#」から行末まで)とメッセージ(引用符の中)だけと考えてください.
「syntax error, unexpected $end, expecting kEND」のようなエラーが出る.エラーの行がプログラムの最後の行である.
このエラーは,どこかでendが書かれていないために発生します. if,while,do,def,classなどに対応するendが抜けていないかどうか確認してください.
プログラムにインデントをつける,つまりプログラムの構造に応じて各行の先頭を適宜字下げしておくと,このような構造的なエラーは発生しにくくなります. emacsでは,[Tab]キーで自動的にインデントがつけられるようになっています. ただしインデントが正しくつけられていないときは, 上の行から順にインデントをつける必要があります.