Ruby on Rails の最初のページを作成するときのメモ
お家の検証サーバ用の備忘録です。今回は wheel
グループのユーザーです。
Rails の用意
Rails
をインストールした状態にします。
https://zenn.dev/asterisk9101/articles/fedora41server-4
Homeページの作成
最初に簡単なホームページを作成します。
bundle exec rails generate controller home index
ルートに設定します。
sed -i 's/get "home\/index"/root "home#index"/' config/routes.rb
bin/dev
で開発サーバを起動します。
ブラウザで http://{サーバのIPアドレス}:3000/
にアクセスすると、Home#index
と記載されたページが表示されれば成功です。
認証機能の追加
普通は何かしら認証機能があるはずなので、広く利用されている認証ライブラリ devise
をいれてみます。
bundle add devise
bundle exec rails g devise:install
# user モデルが追加される
bundle exec rails g devise user
# マイグレーション
bundle exec rails db:migrate
一旦、bin/dev
を終了して、起動し直します。
ブラウザで http://{サーバのIPアドレス}:3000/
にアクセスすると、先ほどと同じく Home#index
と記載されたページが表示されます。
app/controllers/application_controller.rb
に以下を追記します。
before_action :authenticate_user!
ブラウザで http://{サーバのIPアドレス}:3000/
にアクセスすると、認証画面が表示されるようになります。
ログインユーザーの作成
ログイン画面が表示されるようになりましたが、ユーザーが定義されていないためログインできません。
seed ファイルにユーザー登録用のコードを記載します。
vi db/seed.rb
User.find_or_initialize_by(email: 'admin@example.com') do |user|
user.password = 'P@ssw0rd'
user.save!
end
以下のコマンドを実行して seed を実行します。
bundle exec rails db:seed
ブラウザで http://{サーバのIPアドレス}:3000/
の認証画面で admin@example.com
を使ってログインを試みます。
Home#index
と記載されたページが表示されれば認証成功です。
ログアウトとメッセージの表示
ログアウトリンクやログイン失敗の際にメッセージを表示するには、レイアウトに以下を追記します。
vi app/views/layouts/application.html.erb
<% if flash[:alert] %>
<p style="color: red"><%= flash[:alert] %></p>
<% end %>
<header>
<% if user_signed_in? %>
<li>
<%= link_to "logout", destroy_user_session_path, method: :delete %>
</li>
<% else %>
<li>
<%= link_to "signup", new_user_registration_path %>
</li>
<li>
<%= link_to "login", new_user_session_path %>
</li>
<% end %>
</header>
次
Discussion