5/20 15:15 開始
REST(REpresentational State Transfer):
アプリケーションを構成するコンポーネントを「リソース」としてモデル化することを指す。
これらのリソースは、リレーショナルデータベースの作成/取得/更新/削除(Create/Read/Update/Delete: CRUD)操作と、
4つの基本的なHTTP requestメソッド(POST/GET/PATCH/DELETE)の両方に対応している。
*debuggerメソッド
アプリケーションのdebuggerが呼び出された瞬間の状態を確認できる。
例えば...
↓にdebuggerメソッドを差し込むと
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
debugger
end
.
.
.
end
Railsサーバーを立ち上げたターミナルに
rdbg(Ruby debugger)プロンプトが表示され、色々確認できる。
(rdbg) @user.name
"xxxx"
(rdbg) @user.email
"xxxx"
(rdbg) params[:id]
"1"
Ctrl-Dを押し、debuggerの行を削除することで
アプリケーションの実行を続行できる。
7.1.3まで終了
16:15 終了
16:45 開始
*form_with
Active Recordのオブジェクトを取り込み、そのオブジェクトの属性を使ってフォームを構築する。
(使用例)
<%= form_with(model: @xxx) do |f| %>
.
.
.
<% end %>
fオブジェクトは、HTMLフォーム要素(テキストフィールド、ラジオボタン、パスワードフィールドなど)に対応するメソッドが呼び出されると、@xxxの属性を設定するために特別に設計されたHTMLを返す。
<%= f.label :name %>
<%= f.text_field :name %>
↓のHTMLを返す
Name
<%= f.label :password %>
<%= f.password_field :password %>
↓を返す
Password
※パスワードフィールド(type="password")は文字がドットに置き換わって表示される。
↓のHTMLも生成される。
※formタグ:入力・送信フォームを作成する時に使うタグaction="/users" method="post"
→/usersに対してHTTPのPOSTリクエストを送信する
/routesで確認してみると、↑の/usersへのPOSTリクエストはcreateアクションに送られる。
POST /users(.:format) users#create
7.3まで終了
5/20 18:30 終了
5/22 8:20開始
・ユーザー登録に成功後の動き
*別のページにリダイレクト(Redirect)する ※Webでは一般的
(例)redirect_to @userを追記
def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render 'new', status: :unprocessable_entity
end
end
redirect_to @userは↓と同義
redirect_to user_url(@user)
*DBのリセット
rails db:migrate:reset
7.4まで終了
5/22 9:00 終了
5/22 18:30 開始
・プロ品質のデプロイ
*ユーザー登録をセキュアにする
sample_appは、ユーザー登録フォームで送信するとデータがネットワーク越しに流される。
→ネットワークに流れるデータは途中で捕捉できるため、扱いには注意が必要⚠️
Transport Layer Security(TLS)を用いてセキュアにする。
TLS:ローカルのサーバーからネットワークにデータを送信する前に大事な情報を暗号化する技術。
config/environments/production.rbにて
config.force_ssl = true
とすることで、あらゆるブラウザでTLSを強制し、httpsによる安全な通信を確立する。
Rails.application.configure do
.
.
.
# Force all access to the app over SSL, use Strict-Transport-Security,
# and use secure cookies.
config.force_ssl = true
end
Renderドメイン内で実行されるアプリケーションについては、RenderのTLS証明書が利用できる為
デプロイすれば、自動的にTLSが有効になる。
*本番環境
本番環境ではPumaというHTTPサーバーを使う。
Pumaは、大量のリクエストを受信できる能力を備えたサーバー。
※Rails 5以降ではデフォルトでPumaが使えるようになっている。
*RenderのStart Commandを設定。
Renderダッシュボード「Settings」で、
デフォルトの
Start Command
↓
bundle exec puma -C config/puma.rb
に置き換える。
*本番データベースの設定
本番環境のデータベースでPostgreSQLが使われるように設定する。
データベース設定ファイルconfig/database.ymlのproductionセクションを追記↓
production:
<<: *default
adapter: postgresql
encoding: unicode
url: <%= ENV['DATABASE_URL'] %>
第7章終了!
5/22 19:00 終了