Rails Tutorial意図せず2週目(第7章 ユーザー登録)

背景

1周目第13章途中でどうしても問題が解消できなくなり、gitでソースコードを戻してもDBの状態が戻らない、Herokuにデプロイはできるがアプリケーションが表示されない等の問題達にぶち当たったため、意図せず2周目を開始することに。
今回は丁寧にわからない用語等あれば拾いつつ復習していこうと思います。

第7章 ユーザー登録

前章でUserのDBとModelを作成したため、本章ではユーザーを登録していきます。その中でRailsの以下のような機能に触れていきます。

  • debugメソッド
  • Railsの3環境、開発(development)、テスト(test)、本番(Production)
  • flashメッセージでの一時的なメッセージの表示

これらに加えて本番環境のHerokuにはSSLとPuma(Webサーバ)を設定していきます。

以下1周目はスルーしていた概念やコマンドの意味を調べる

3つの環境

Railsには元来、以下の3つの環境が備わっており、それぞれが疎結合(つながっていない状態)になっています。本章でここを掘り下げるためそれを深く理解するためにそもそもどのような環境でどのような違いがあるのか調べてみました。

  • 開発(development)
  • テスト(test)
  • 本番(Production)

私の少ない経験上、これら3つの環境は開発をする際に必要なものです。
開発環境では現在開発中のアプリケーションを保持し、テスト環境ではその妥当性のテストを行い、本番環境は一般ユーザーが見ることができる環境として切り分けておきたいのです。
3環境についてしらべていたところ、「システム開発の際に用意すべき環境」というちょうどよい記事があったので、こちらを貼っておきます。

私自身こういう大きなフレームワークにふれるのは初めてなので3環境が整っていることに驚きましたが、他のフレームワークでもあるものなのでしょうか。気になります。


各環境へのアクセス方法とその際のコマンドの使い方をRails Tutorial 第7章 ユーザー登録 コラム 7.1. Railsの3つの環境から引用してきました。以下引用です。

【各環境の使い方 コマンド】

$ rails console [各環境名]

$ rails server --environment [各環境名]

$ rails db:migrate RAILS_ENV=[各環境名]

また、db:migrateは語順を変えてこういう書き方も可能なようです。

$ RAILS_ENV=[各環境名] rails db:migrate


【結論】

  • Railsにはシステム開発に必要な3つの環境がはじめから用意してある
  • 各環境へアクセスする方法も定義してあるため差分確認も可能
  • 各環境が疎結合になっていることで事故が起きにくいように感じた
form_with

本章ではユーザー登録ページを作成する際にユーザー登録フォームを作成しました。その際に利用したRailsの機能が「form_with」です。
この機能を使うと、form_withブロック配下でHTMLのフォームが作成できます。 以下の例のように、form_withブロック配下にテキストボックスやメールフォーム、パスワードフォーム等の作成が可能になります。

[例: /app/views/users/new.html.erb(一部抜粋)]


<%= form_with(model: @user, local: true) do |f| %>

<%= f.label :name %>
<%= f.text_field :name %>

<%= f.label :email %>
<%= f.email_field :email %>

<%= f.label :password %>
<%= f.password_field :password %>

<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>

<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>


詳細についてはこちらのサイトに載っていたので、参照ください。

railsdoc.com

【結論】

  • form_withはブロック内にHTMLフォームを実装可能
  • フォームの種別(タイプ)はHTMLフォームに依存1