1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Error】シングルクォートとダブルクォート。Rubocopの自動修正機能

Last updated at Posted at 2024-09-12

はじめに

今回はタイトル記載の通り、「"」と「`」という違いだけでエラーが発生するのか、という事を知ったので、エラー発生から、どのような解決手法があるのかを記事にしていきたいと思います。

環境

  • Windows, WSL
  • Docker
  • Ruby 3.2.3
  • Rails 7.1.3

1:具体的なエラー内容

Image from Gyazo

Run bin/rubocop -f github
  bin/rubocop -f github
  shell: /usr/bin/bash -e {0}

Error: Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Error: Process completed with exit code 1.

2:エラーの原因:

  • Rubocopのルールでは、ダブルクォート(" ")を優先的に使うべきだという規則があり、シングルクォート(' ')を使っている場合にエラーを出します
  • シングルクォートは、特定のエスケープ文字を避けたい場合のみ使うのが望ましいとされています。たとえば、文字列内にダブルクォートを含める場合です。

3:対処方法

エラー原因から察するに単純にシングルのコードをダブルにすればいいだけになります、いかんせん、どこに入力したのか全く覚えていません:scream:
調べえると次のような対処手順がありました。

具体的な手順、自分で探すのではなくコードを利用する!

エラーの数が多い場合、Rubocopには自動修正機能があります!
それを使ってまとめて修正していきます

  1. 以下のコマンドを実行して、自動でエラーを修正します。

    bin/rubocop -a
    
    • なんとa オプションを使うと、自動でコードを修正してくれます!
  2. そして再度下記を実行してエラーが解消されたか確認します

    bin/rubocop -f github
    

実際の流れ(どんなものが出力されるのか)

$ docker compose exec web bash
# bin/rubocop -a
Inspecting 30 files
........................C.....

Offenses:

config/routes.rb:2:8: C: [Corrected] Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
  root 'static_pages#top'
       ^^^^^^^^^^^^^^^^^^

30 files inspected, 1 offense detected, 1 offense corrected

はい、上記でRubocopが自動的に修正してくれたました
具体的に言うと、config/routes.rb ファイルの2行目にあるシングルクォートを、Rubocopが自動的にダブルクォートに変更しています。

1 offense corrected というメッセージが出ているので、Rubocopがこの箇所を修正したことが確認できます。

  • Before (修正前):

    root 'static_pages#top'
    
  • After (修正後):

    root "static_pages#top"
    

最後に、修正が正しく行われたかもう一度確認して終了になります

```
# bin/rubocop
Inspecting 30 files
..............................

30 files inspected, no offenses detected
```

さいごに

単に文字列を囲むクォートの使い方に関するエラーでしたが、エラーが発生したコードを探しに行くのではなく、Rubocopの自動修正機能を使うことで解消できるという事を知りました!!すごい。
今回の記事が何か参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?