gemのインストール
gem 'devise' #<= cではなくsなのに注意
$ bundle install
$ rails g devise:install
スペルミスによるエラーを出したので気をつける。
##モデルを作成
$ rails g devise Model
$ rails db:migrate
今回マイグレートのコマンド実行の際にエラーが出た。
Mysql2::Error: Specified key was too long; max key length is 767 bytes
デフォルトで設定されているencoding :utf8mb4
は1文字あたり4倍とまで格納できるために起きたエラー。そこで、utf8
に変更した。
default: &default
adapter: mysql2
encoding: utf8 #<= utf8mb4より変更
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
##ルーティング設定
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にてビュー確認。
##まとめ
まず公式ドキュメントにて大まかな手順を把握。その後、各ステップで大体エラーが発生するのでその都度検索しエラー内容を仮設検証していく。
さいごに
プログラミングの初学者です。その日に学んだことを学習の一環としてアウトプットしています。より深く学習していきたいと考えておりますので、内容に誤りがございまいたらご指摘等いただけますと幸いです。
参考図書:パーフェクト Ruby on Rails【増補改訂版】すがわらまさのり/前島真一/橋立友宏/後藤優一/五十嵐邦明
##参考
https://github.com/heartcombo/devise