by Sampo Kuokkanen
Deviseを追加しよう!
今回は、Deviseを追加します。
Rails 7, Turbo, Ruby 3.1.0という組み合わせで使っていますので、
Gemfileにgem "devise"
を追加してもうまく行かないです。
こちらを解決してくれているPRはDeviseに対してされていますが、 問題は一つにはまとまっていないということです。
なので、Deviseをフォークして、フォークしたものにそのPRをマージして、それを使わないといけないです。 こちらはやっていますので、以下のものを使ったらすぐ使えます:
# Gemfile
gem 'devise-i18n'
gem 'devise', git: 'https://github.com/sampokuokkanen/devise.git', branch: 'master'
gem 'devise-tailwindcssed', git: 'https://github.com/sampokuokkanen/devise-tailwindcssed.git', branch: 'rails-version-limit-removal'
というGemセットになります。
DeviseのViewの国際化(日本語化)は、devise-i18n
を使います。
Deviseは今Turbo非対応のため、フォークしたものを使います。
スタイルはTailwindCSSを使いますので、それようのGemも追加します。
(GemはTailwind 1.0用に作られたみたいで、微妙に修正も必要な箇所があるかもしれないです)
rails generate devise:install
を実行して、Deviseをインストールします。
config/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
を追加して、
application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
も追加して、あとはルートのパスをroutes.rbに追加します。
root to: "home#index"
ただこれで問題になるのはこのホームコントローラーそのものが存在しないことですね。 それも作成しましょう。
rails generate controller Home index
このコマンドでその問題も解決です!
rails generate devise:views:tailwindcssed
このコマンドを使うと、TailwindCss対応のViewも作成されます。
これで全部対応できた!!! というわけにも行かず、まだユーザーモデルがないです。 次はユーザーモデル作成します。
rails generate devise User
だけですので、極シンプルです。 ユーザーモデルのマイグレーションの方は必要なフィールドを追加しています。
t.string :first_name, null: false
t.string :last_name, null: false
とりあえず名前は欲しいですね。
これでDeviseの設定はひとまず完了ですね。 今は登録・ログインのリンクがないので、次はナビゲーションバーを作成します。