よくある質問
ここではプログラムを実行するとき,プログラムを作成するときに発生する典型的な問題とその解決法を示します.
- プログラムが実行できない.「command not found」というエラーが出る
- プログラムが実行できない.「no such file or directory」というエラーが出る
- プログラムが実行できない.「Invalid char ...」というエラーが出る
- プログラムが実行できない.「syntax error, unexpected $end, expecting kEND」のようなエラーが出る.エラーの行がプログラムの最後の行である.
- Emacsで文字が上書きされてしまう
- 大文字しか入力できない
- Emacsでプログラムにつけられる色がおかしい
- Webページからファイルをダウンロードする方法が分からない
プログラムが実行できない.「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]キーで自動的にインデントがつけられるようになっています. ただしインデントが正しくつけられていないときは, 上の行から順にインデントをつける必要があります.
Emacsで文字が上書きされてしまう
Emacsで文字が上書きされてしまう場合には[Insert]キーを押して下さい. [Insert]を押すと「挿入モード」「上書きモード」を交互に切り替えることになります. なお上書きモードのときはEmacsの画面下の帯に「(Ovwrt)」(overwriteの意味)と表示されます.
大文字しか入力できない
大文字だけが入力されるモードがあります. [Shift]+[CapsLock]を押すと,通常のモードと交互に切り替えられます.
Emacsでプログラムにつけられる色がおかしい
- ファイルを一度保存して,ファイルを閉じてから([ファイル]→[閉じる]),再度開いてみて下さい.
- ファイル名が「.rb」で終わっていることを確認してください.
Webページからファイルをダウンロードする方法が分からない
リンクを右クリックして「Save Link as ...」を選択して, 適宜ファイル名を変更したり,ダウンロード先のディレクトリ(フォルダ)を変更したりした上で,保存(Save)して下さい.