Ruby on RailsとPostgreSQLを接続するための注意事項

# 対象読者
これからRuby on RailsとPostgreSQLでアプリを作っていきたい人

# 検証環境
今回の検証環境情報はこちらです。
<table>
  <thead>
    <tr>
      <th>OS/ソフトウェア</th> <th>バージョン</th>
    </tr>
  </thead>
  <tr>
    <td>OS</td> <td>Windows11</td>
  </tr>
  <tr>
    <td>Ruby</td> <td>3.1</td>
  </tr>
    <tr>
    <td>Ruby on Rails</td> <td>7.0.8</td>
  </tr>
</table>

# Railsプロジェクトの作成
コマンドプロンプトで下記のコマンドを入力します。
Railsのバージョンを指定して(指定しなくても良い)、使用するデータベースとGitをコマンドに入れます。

Enterキーを押下すると、プロジェクトが作成されます。

```
rails _7.0.4_ new プロジェクト名 -d postgresql -G
```

# PostgreSQLにデータベースを作成する
Railsアプリと接続するためのデータベースを、作っておきます。

# Railsアプリを起動する
Railsアプリのプロジェクト作成とPostgreSQLのデータベース設定完了して、いざアプリを起動させます。

```
(Windowsの場合)
ruby bin/rails server

(macの場合)
bin/rails server
```

...おやっ💦こんな感じのエラー画面がでてきた...

![RubyNGScreen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/d7068bdf-a69a-47d6-fa79-4e773ebfdeb4.png)

これは、Railsアプリにデータベースの情報が設定されていないときにおこる画面ですね。
なので、Railsアプリに接続するデータベースの情報を入力しましょう。

# データベースの設定ファイルは「database.yml」である
データベースのせてい情報を入力するファイルは、<b>database.yml</b>というファイルを修正する必要があります。

では、どこに書いたらいいのか？というとこちらになります。
```database.yml
～(略)～

default: &default
  adapter: postgresql
  encoding: unicode
  username: postgres
  password: postgres
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  
～(略)～
```
defaultは以下に、<b>username</b>と<b>password</b>を入力しておきましょう。

![RubyOKEditer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/839c6157-23ca-8599-6e12-ed0271323eb7.png)



さっきのエラーが起きていたときの<b>database.yml</b>はこのようになっていたんですね...
```database.yml(エラー時)
～(略)～

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  
～(略)～
```

さて、<b>database.yml</b>の設定が完了したので、もう一度アプリを起動しましょう。

![RubyOKScreen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/b3ea2a3d-e7e5-add6-1831-a51e06e6ddf0.png)

ちゃんと接続できましたね！

以上です...と言いたいのですが、実はこの<b>database.yml</b>ファイルは、記述を少し誤ると思わぬエラーに遭遇してしまいます。

それがこちらです↓
![RubyNGScreenNoSpace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/d7f0c7e2-aa4f-ac38-67b2-bcd0dac91886.png)

このエラーは何物かというと、さっき追加した箇所にスペースが無い、というエラーなんです。

もう一度、<b>database.yml</b>を見てみましょう。
どこが間違いかわかりますか...?

![RubyNGEditerNoSpace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/f3223182-c782-cf3f-794c-60e76410698c.png)

実は、ココなんです！

```database.yml(正常)
～(略)～

default: &default
  adapter: postgresql
  encoding: unicode
  username: postgres
  password: postgres
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  
～(略)～
```

```database.yml(エラー)
～(略)～

default: &default
  adapter: postgresql
  encoding: unicode
  username:postgres
  password:postgres
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  
～(略)～
```

そう！コロンと①ユーザー名または②パスワードの間に半角スペースが入っていなければ、エラーが表示されるんです！

```拡大表示(正常).
username: postgres
password: postgres
```

```拡大表示(エラー).
username:postgres
password:postgres
```

人間にとっては些細なことなんだけど、コンピュータにとっては一大事なんですね...💦
意外と見落としがちですが、このようなエラー事象は起こりうるものなんです💦

なので、みなさんもymlファイルを修正する際は、半角スペースは意識しておきましょう(^^♪

以上です。