yamlファイルのコメントアウトをエディタのショートカットで解除してエラーが出るときに確認すること


おことわり

Railsで遭遇したエラーではありますが、Rails以外でも起こりうるのでタイトルからRailsを外しています。

問題が起こった状況

Railsの設定ファイルの一つに、storage.ymlという、ストレージ周りの設定をするyamlファイルがあるのですが、
その中に、デフォルトではコメントアウトされているAWSのS3に関する設定があります。

今回、S3を設定する必要があったので、それを意気揚々とIDEのショートカットでコメントアウトを解除したときに問題が発生しました。

storage.yml
test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
# amazon:
#   service: S3
#   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
#   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
#   region: us-east-1
#   bucket: your_own_bucket

どうなったか

下記エラーが発生しました

RuntimeError: YAML syntax error occurred while parsing /project_dir/config/storage.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Error: (<unknown>): did not find expected key while parsing a block mapping at line 1 column 1

どこが間違っていたか

storage.yml
test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
 amazon:
   service: S3
   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
   region: us-east-1
       bucket: your_own_bucket

この見た目ではわかりにくいですが、amazonというキーの行以降が半角スペース1つ分右にずれています。

そのため、yamlの解釈エラーが出てしまっていたということになります。

対処法

ずれている分の半角スペースを削除する

結論

エディタのコメントイン機能を使う際はインデントに注意してください。