パーフェクトRails輪読会 ver3
2021年8月30日 パーフェクト Ruby on Rails 次回1-4scaffoldを使ってRailsでの開発を体験しよう
1-4-1
% ls -1FA db/migrate
lsコマンド : ファイルやディレクトリの情報を表示することができます。
ls -1FA db/migrateの分解
・・・ 1 = ハードリンクの数(ハードリンクはファイルのあだ名のことです。)
・・・ F = 名前の後ろにファイル識別子を付ける
・・・ A = カレントディレクトリ(.)と親ディレクトリ(..)以外のピリオド始まりのファイルやフォルダも表示されるようになります。
aをつけるとカレントディレクトリ(.)と親ディレクトリ(..)も表示されます。
--skip-action-cable
?🤔
フロントのWebSocketとバックエンドのRails周りをシームレスに統合する、フルスタックなフレームワーク。つまり?…
Action Cableとは
Action Cableとは双方向通信を低コストで行うために、WebSocketsとRailsをつなぎ目がないくらい、自然な感じで統合するためのフレームワークという認識でOKです。
Action Cableを利用することで、たとえばリアルタイムで更新されるチャット機能を実装することができます。
3ウェイハンドシェイク(web技術の基本P61)での1つ目のコネクションの確立を行ったら、そのまま繋いだままにしておく事ができます。なのでリアルタイムのやり取りにおけるチャット機能で用いると良さそうです。
WebSocketってそもそもなに??
WebSocketはXMLHttpRequest(WebサーバーとHTTP通信を行うためのAPI)の欠点を解決する技術として開発された。
TCP/IPプロトコル通信とは
ネットワークインターフェイス層(1層)、インターネット層(2層)、トランスポート層(3層)、アプリケーション層(4層)で構成され、機器やOSが異なっても共通のプロトコルを用いて通信を成立させることができるものです。
各層の役割
ネットワークインターフェイス層(Layer1)
- 同一のネットワーク内でデータを転送すること。有線のイーサネットと無線LANのWi-Fiを組み合わせることでローカルネットワークを構築を可能にする。
- 端的にいうと「データを共有する始まりの場所」
インターネット層(Layer2)
- 多数のネットワーク同士をルータを用いることでネットワーク間でデータを転送を行います。これをルーティングと呼びます。
- 端的にいうと「データを色々な所に送る場所」
トランスポート層(Layer3)
- パソコンやスマートフォンでネットワークを介した複数のアプリケーションを普段使う中で、適切なアプリケーションに流れているデータを送る役割をはたします。
- 端的にいうと「データの目的地、住所を示す場所」
アプリケーション層(Layer4)
- アプリケーションで扱うデータのフォーマットや手順を決める役割を果たします。
- 端的にいうと「データを人間が見てわかるように変換してくれる所」
イーサネットとは
イーサネットというのは、パソコンなどの機器を有線接続する際の通信規格の一つです。 「規格」なので、有線接続のルールともいえます。 ... 「イーサネット対応機器」というのは一般的に、LANケーブルを差せるということです。 そのため、イーサネットとLANケーブルはほぼ同義と考えても問題ありません。
1-4-2
rails dbconsole
はコマンドライン上からデータベースの中身の確認や編集をすることができるコマンドです。(MySQL、PostgreSQL、SQLite、SQLite3といったデータベースでも利用可能)
- .table
: テーブル一覧の表示
- .schema テーブル名
: 指定したテーブル構成の確認
$ rails dbconsole SQLite version 3.32.3 2020-06-18 14:16:19 Enter ".help" for usage hints. # 作成したテーブル一覧を表示 sqlite> .table ar_internal_metadata bookmarks schema_migrations boards comments users # usersテーブルの内容 sqlite> .schema users CREATE TABLE IF NOT EXISTS "users" ("id" integer NOT NULL PRIMARY KEY, "email" varchar NOT NULL, "crypted_password" varchar DEFAULT NULL, "salt" varchar DEFAULT NULL, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "last_name" varchar NOT NULL, "first_name" varchar NOT NULL, "avatar_image" varchar DEFAULT NULL, "reset_password_token" varchar DEFAULT NULL, "reset_password_token_expires_at" datetime DEFAULT NULL, "reset_password_email_sent_at" datetime DEFAULT NULL, "access_count_to_reset_password_page" integer DEFAULT 0, "role" integer DEFAULT 0 NOT NULL); CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email");
rails db:migrate
を実行すると、まず初めにschema_migrationテーブルを読みに行きます。実行されていないmigrationファイルを実行し、新たなmigration IDを付与します。migrate IDは日時(UTC)が入ります。
**20200514151200**_create_tasks.rb
参照
lsコマンドとオプションについて
https://qiita.com/chihiro/items/6e1404c41e1236a9efe1
WebSocketとAjaxの違いについて
https://teratail.com/questions/1037
TCP/IPとは
https://www.itmanage.co.jp/column/tcp-ip-protocol/