書きつくされているRuby on Railsにdeviseを導入する記事ですが、ひとそれぞれ目的が微妙に違うのか躓いてしまいます。
そこで僕の無知から来るミスも含めて共有し、同じ過ちを皆様に犯さないでいただけるのなら記事を書いたかいがあります。
また、よりよい方法があると思いますが、ご参考にしていただければと思います。
それではいきましょう!
環境
・macOS
・Ruby 2.7.0
・Ruby on Rails 6.0.2
もくじ
1.Railsのプロジェクトを作成する
2.簡単な画面遷移を作る
3.ログイン機能を実装する(ここでdeviseが登場)
1.Railsのプロジェクトを作成する
まずはアプリを開発するディレクトリを作成する。
$ mkdir app_name
$ cd app_name
その後のプロジェクトの作成方法は以下を参照してください。
https://qiita.com/tom-ohiro/items/0030999b838bfe05006d
2.簡単な画面遷移を作る(トップページの作成)
この工程があったために勝手に混乱することに。
まずはユーザーコントローラを作って、トップページを作成。
以下のコマンドでusers_controller.rbなどのファイル、ディレクトリが作成される。
$ rails g controller users
def index
end
ルートを設定する。
get '/' => 'users#index'
表示ページを作成する。inde.html.erbは新規ファイルを自分で作成する。
Hello world! とプログラマっぽく書く
以下を実行してサーバーを起動する。
$ rails s
http://localhost:3000/
にアクセスするとトップページが表示される。
3.deviseを用いてログイン機能を実装する
ここからが本番。
コマンドの順番を間違えると初学者には非常に厄介に感じられるので、よく注意して進んでください。
1.Gemfileに以下を記入
gem 'devise'
2.以下のコマンドをターミナルで実行
順番を間違えないようにゆっくりやりましょう。
$ bundle install
僕は以下のコマンドを忘れていて非常に困った。。。皆様ご注意ください。
$ rails g devise:install
こちらの設定は1,2だけ別途やっておけば大丈夫。
1.はメールを送るときの設定の話。以下の記述を追記してください。
まぁ書いてあるとおりにやるだけなんですが、英語で表示されているだけでうわってなってしまいますよね。
これからこんな画面の連続なので、頑張って読みに行くようにしてみましょう。
読んで見ればこんなこと解説するまでもねーじゃねえかって思うようなことなんです。
でも、はじめのとっつきにくさは半端ないので少しでもハードルが下がればと思い解説させていただきました。
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2.はトップページの表示の話。
以下の記述は上の方で書いた内容と同じことなので、以下の内容を上書きしていただければ大丈夫です。
root to: "home#index"
次に以下のコマンドをターミナルで実行します。
これでログイン画面や新規登録画面などを用意してくれます。
$ rails g devise:views
続いてUserモデルの作成です。
migrationファイルなどが作成されます。
初めての場合は特にmigrationファイルの編集なしで連続して以下のコマンドを入力しても大丈夫でしょう。
あとから保存内容を変えることもできますし、今のうちに編集していただいてももちろん大丈夫です。
$ rails g devise User
$ rake db:migrate
続いて以下の画面。
僕はここで非常に困ってしまいました。
すでにusers_controllersを作ってしまっているので、名前がかぶってしまうのではないか?
ということでコントローラを消すという作業をしてしまいました。
deviceでよく使うusers_controllerと混同してしまいますが、実行しても問題ありません。今後は先を見越して先にdeviceの導入からしたほうがいいでしょう。
$ rails g devise:controllers users
以下の記述はログインする前にページにアクセスしようとすると、ログイン画面に遷移させるというものです。
before_action :authenticate_user!
これでdeviceの導入は完了です。
トップページにアクセスしようとするとログイン画面に遷移すると思います。
おわりに
deviceはとっても便利な機能である一方でわけわからなくても使えてしまうgemでもあります。
便利さと引き換えに使いこなしまでのレベルになるにはもう何段階かレベルアップする必要がありますが、まずは使える技を少しずつ増やして自信をつけることが大切だと思います。
共に頑張っていきましょう。
もし、この方法でうまくいかないとか、このやり方はおかしい。このやり方の方が適当ではないかと言う場合はコメントいただけると大変うれしく思います。
最後までお読みいただきありがとうございました。