初学者のプログラミング　Deviseの導入

## gemのインストール
```ruby
gem 'devise' #<= cではなくsなのに注意
```

```terminal
$ bundle install
$ rails g devise:install
```
スペルミスによるエラーを出したので気をつける。
##モデルを作成
```terminal
$ rails g devise Model
$ rails db:migrate
```
今回マイグレートのコマンド実行の際にエラーが出た。
`Mysql2::Error: Specified key was too long; max key length is 767 bytes`
デフォルトで設定されている`encoding :utf8mb4`は１文字あたり4倍とまで格納できるために起きたエラー。そこで、`utf8`に変更した。

```config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8 #<= utf8mb4より変更
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock
```

##ルーティング設定
```config/routes.rb
Rails.application.routes.draw do
  devise_for :users
end
```
ターミナルでルーティング確認

```
                               Prefix Verb   URI Pattern                                                                              Controller#Action
                     new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
                         user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
                 destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
                    new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                                      PUT    /users/password(.:format)                                                                devise/passwords#update
                                      POST   /users/password(.:format)                                                                devise/passwords#create
             cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
                new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
               edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
                    user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                                      PUT    /users(.:format)                                                                         devise/registrations#update
                                      DELETE /users(.:format)                                                                         devise/registrations#destroy
                                      POST   /users(.:format)                                                                         devise/registrations#create
```
usersのURIを確認。モデルの作成をして、マイグレートしないとルーティングエラーが出た。
`methods.rb:282:in `const_get': uninitialized constant User (NameError)`

##ビューの作成
```
$ rails generate devise:views
```

##ビューを確認
localhost:3000/users/sign_inにてビュー確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1118117/410203be-8f56-f1a7-9ba9-1046c6102bff.png)

##まとめ
まず公式ドキュメントにて大まかな手順を把握。その後、各ステップで大体エラーが発生するのでその都度検索しエラー内容を仮設検証していく。

## さいごに
プログラミングの初学者です。その日に学んだことを学習の一環としてアウトプットしています。より深く学習していきたいと考えておりますので、内容に誤りがございまいたらご指摘等いただけますと幸いです。

参考図書：パーフェクト Ruby on Rails【増補改訂版】すがわらまさのり/前島真一/橋立友宏/後藤優一/五十嵐邦明

##参考
https://github.com/heartcombo/devise

https://qiita.com/Taku0055/items/0c17d6f0de7e2e8a7f96

https://qiita.com/zuu_aa/items/a49b09fbfa3ad34c04cb