YAML syntax error occurred の対処法

 サイト訪問ありがとうございます!ミツオです。
この記事ではRails サーバーを起動して http://localhost:3000/ に接続しようとした時に、次のようなエラーが生じたときの対処法について説明しています。

#<RuntimeError: YAML syntax error occurred while parsing
/Users/ユーザー名/作業ディレクトリ名/config/database.yml. 
Please note that YAML must be consistently indented using spaces. Tabs are not allowed. 
Error: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3>

このリンク先が無事に表示されればRails サーバーの起動は完了と言えるのですが、最後の壁が立ちはだかっています。
このエラーは対処法がエラーメッセージに書かれているのですが、それに対処するだけでは解決しないことがあります。
今回はその原因も含めて説明します。

http://localhost:3000/ にアクセスしたらエラーが発生した、、
・エラーメッセージに書かれていた対処法を行なったが解決しなかった、、

そんな人たちもこの記事を読めば、エラーを解消してRails サーバーの立ち上げを完了することができます!
Rails サーバーを立ち上げる流れについては次のリンク先をご覧ください。

Rails サーバーをMacPc で起動する初心者にもわかりやすい方法

1. YAML syntax error occurred

 まずは状況を確認しましょう。
Rails サーバーの立ち上げはうまくいっています。
しかし、http://localhost:3000/ にアクセスすると、次のような画面がブラウザに表示されるとともにターミナル上でエラーメッセージが表示されます。

#<RuntimeError: YAML syntax error occurred while parsing
/Users/ユーザー名/作業ディレクトリ名/config/database.yml. 
Please note that YAML must be consistently indented using spaces. Tabs are not allowed. 
Error: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3>

database.yml のファイルでスペースが使われなければならないところでタブが使われているようです。

2. YAML syntax error occurred の対処法

 タブが使われていることが原因なのでdatabase.yml ファイル内のタブをスペースに置換します。
control と C を同時に押して一度rails サーバーを停止してください。
作業ディレクトリ直下のconfigの中にあるdatabase.yml をvi モードで編集します。
次のコマンドを入力してください。

$ cd config
$ vi database.yml
:set expandtab
:retab 1
:wq

これでdatabase.yml 内のタブがスペースに変換されました。
作業ディレクトリに戻ってrails サーバーを起動し、
http://localhost:3000/
にアクセスしてみてください。
一つ上の階層に移動するには次のコマンドを入力します。

cd ..

4の画像が表示されていればrails サーバーの起動が完了しています。

また同じエラーが出たという方は3 に進んでください。

3. YAML syntax error occurred の隠れた原因

 エラーの原因はタブが使われていたことではありませんでした。
真のエラーの原因はエラー文の3行目にありました。

/Users/ユーザー名/ruby/config/database.yml. 
Please note that YAML must be consistently indented using spaces. Tabs are not allowed. 
Error: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3>

17行目の3つ目の欄の鍵を読み取る間にあるはずの : がないと表示されています。
database.yml の17行目を確認してみましょう。

$ cd config
$ vi database.yml
  password:******** #17行目

なんと原因はpassword: と打ち込んだパスワードとの間にスペースがないことでした。
ではこのまま修正を行います。
a キーを押して編集モードにし、矢印キーでpassword:の右側にカーソルを移動させてスペースを入力!
esc キーを押してコマンドモードに戻り、:wq を入力してエンターキーを押してください。

4. YAML syntax error occurred 解決

ではrails サーバーを起動し、http://localhost:3000/ にアクセスしてみましょう!
次のコマンドを入力したあと、ブラウザでhttp://localhost:3000/ にアクセスしてください。

rails s

下の画像が表示されればrails サーバーの起動が完了です!

まとめ 〜YAML syntax error occurred〜

 エラーは解決しましたか?
エラーメッセージとは異なる内容が原因となっており解決策を見つけるのに大変苦労すると思います。

ですが、このエラーを解決できれば、後はRailsアプリを作成していくだけです!
楽しんで開発していきましょう!
最後まで読んでくださってありがとうございました。