---
# System prepended metadata

title: Ruby on Rails 講座
tags: [ぽよ大学]

---

# Ruby on Rails 講座　
> [name=信輔先生]
###### tags: `ぽよ大学`

## Webの復習
- Webとは
    - サーバ・クライアント
    - World Wide Web
- URL：Web上のリソースの住所 `https://hackmd.io/KJjYcQTYRPGVN-ipjfyfiw?both`
- （グローバル）IPアドレスはWeb上のサーバの住所
    - ex) `yahoo.co.jp` `google.com` `hackmd.io`
- 通信の決まりごと（プロトコル）の一つにHTTPがある
    - HTTPSはHTTPを暗号化したもの
    - メールや動画のプロトコルなど100種類ほど
- リソースとは
    - サーバにあるデータでWeb上に公開されるものすべて
    - ex) このページ
    - ex) yahooのニュースページ
    - ex) instagramに投稿された写真
    - ex) twitterの~~飛鳥の裏垢の~~つぶやき
    - （逆に公開されてないものは何？）
        - サーバPCのデスクトップ
        - サーバPCの設定ファイルとか
- HTTPのメソッド（種類）
    - ★GET：リソースの取得
        - `GET news.yahoo.co.jp/topics`
        - ブラウザで普通にURLを打ち込んでページを開くとき、ブラウザはGETメソッドを実行している。
        - ex) Twitterを開く（トップページのリソースをGETで取得している）
    - ★POST：リソースの作成・追加
        - POST 何らかのURL
        - ex) Twitterでつぶやく。
        - ex) ブログを投稿する。
        - ex) アカウント新規作成する。
    - ☆DELETE：リソースの削除
        - DELETE 何らかのURL
        - ex) Twitterのつぶやきを消す。
        - ex) 投稿したブログを消す
        - ex) 退会する
    - ☆PUT：リソースの更新、作成
        - PUT 何らかのURL
        - ex) すでに投稿したブログを更新する。
        - ex) アカウント情報の更新（プロフィール変えるとか）
    - HEAD
    - PATCH
    - OPTIONS

# Webアプリをどうやってつくっていくか

## MVCモデル (Railsが採用しているモデル)
Model-View-Controller
～～サーバー内の模様～～

![MVCモデルの概念図](https://railstutorial.jp/chapters/6.0/images/figures/mvc_detailed.png)

### ツイートを取得するとき
1. ブラウザが `GET https://twitter.com/harataira_/status/1271401277902090240` する。（GETメソッド）
2. ルーターやらなんやらが頑張って `twitter.com` のサーバ `T` にたどり着く。
3. `T` のcontroller（司令塔）がHTTPのリクエストを受け取って「何をしたらいいか判断する」
    4. [Model] データベース（データを保存しているところ）からツイートを取得するようModel（下っ端）に依頼する。
5. Controllerは見つかったツイート情報をもとにページを作るようViewに依頼する。
    6. [View] Viewはツイートを表示するページ（HTML・CSS・JavaScript）を作ってControllerに返す。
7. Controllerはページをクライアントに返す（HTTPレスポンス）
8. クライアントのブラウザがページをレンダリングする。

# Linuxで使うコマンドの例
```
$ ls
  今いるところにどんなファイル・ディレクトリがあるか
$ pwd
  print working directory
$ touch poyo.txt
  poyo.txtというファイル名でファイルを新規作成する
$ rm poyo.txt
  poyo.txtを削除する
```

# Rails Hello, World!
```
$ rails new aska
 (askaという名前のRailsアプリケーションを新規作成する)
$ bundle install --path vendor/bundle
 (Gemfileに宣言したライブラリを vendor/bundle にインストールする)
config/environments/development.rbにconfig.hosts.clearを追加する。
$ rails server
```

## ルーティングの定義
`config/routes.rb` はHTTPリクエストとRailsのControllerを紐付ける。

```ruby=
root 'application#hello'
↑と↓は全く同じ意味（）
get '/' to: 'application#hello'
```


これは、 `HTTP`の`GET`メソッドで`/`宛てにリクエストが来たら、application controllerのhelloメソッドを実行しなさい、という意味になる。
