Railsチュートリアル

# はじめに
Rails触ることになりそうなので、Railsチュートリアルをやりつつ基本を学ぶ。

# 開発環境
- docker
- VsCode

# 内容

## 環境構築

- dockerで環境構築する
- 前提
    - dockerインストール済み
    - VsCodeインストール済み
    - 拡張機能インストール済み


- 下記手順ですすめる
- [Visual Studio Code と Docker を使って開発する](https://railstutorial.jp/help#devcontainer)

- 「Use this template」をクリックし、リポジトリを作成する
![スクリーンショット 2024-05-12 18.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/ade6e5da-7b58-39b5-a494-6e105ea6c958.png)


- ローカル環境にもってくる

```
git clone https://github.com/<GitHubアカウント名>/<設定したリポジトリ名>.git
```

![スクリーンショット 2024-05-12 18.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/fdcc4470-fe36-3982-ea07-458f2a06d177.png)

 - 開発コンテナを開く

![スクリーンショット 2024-05-12 19.03.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/0db999ef-6475-a5ba-1368-429e4b22c3a8.png)

- 下記のようになっていれば、起動している状態

![スクリーンショット 2024-05-12 19.21.24 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/36ad2ea6-1623-4126-d202-6afff6b8a3e5.png)

- バージョンも表示されている

![スクリーンショット 2024-05-12 19.27.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/5488f6f0-8e08-624d-5d30-3e5dd9b83132.png)


# チュートリアルすすめる

## Railsガイドにそってブログのアプリケーションを作成する

```
rails new blog
```

```
cd blog
```

-  Webサーバーを起動する

```
bin/rails server
```

- 下記が表示できていればOK
![スクリーンショット 2024-05-12 19.40.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/682c41bc-1124-6781-c5bc-7219515f74db.png)

- Hello, Rails!を表示する
表示するために「ルーティング」「コントローラ」「ビュー」が必要なので追加していく。

- routeを追加

```config/routes.rb

Rails.application.routes.draw do
  get "/articles", to: "c![スクリーンショット 2024-05-14 7.30.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/abe9d986-c76c-3206-36a4-916ca42a1e3a.png)
#index"
end

```

- コントローラーを作成

```
bin/rails generate controller Articles index --skip-routes
```

```app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
  def index
  end
end

```

```app/views/articles/index.html.erb
<h1>Hello, Rails!</h1>

```

- アプリケーションのrootパスをこのコントローラとアクションに対応する

```config/routes.rb
Rails.application.routes.draw do
  root "articles#index"

  get "/articles", to: "articles#index"
end
```

- Hello, Rails!が表示されるようになった

![スクリーンショット 2024-05-12 20.16.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/6f8e1abd-3901-ecf7-a68b-ed012d280c1f.png)


- Railsアプリケーションは、アプリケーションコードを読み込むのにrequireを書く必要がない。下記の2つの場合は書く必要があり

- lib/ディレクトリの下にあるファイルを読み込む場合
- Gemfileでrequire: falseが指定されているgem依存を読み込む場合

##  MVCを理解する

- モデルを作成する。モデル名は常に英語の「単数形」で表記すること

```
bin/rails generate model Article title:string body:text
```

- マイグレーションを実行する

```db/migrate/20240512220115_create_articles.rb
class CreateArticles < ActiveRecord::Migration[7.1]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end
```

- 以下のコマンドをたたいて、マイグレーション実行できていればOK
```
bin/rails db:migrate
```

- モデルを用いてデータベースとやりとりする
- Railsのコンソール機能を使用してみる。コンソールを起動する

```
bin/rails console
```

- irbプロンプトが表示され、先ほど作成したArticleオブジェクトを以下のように初期化してみる（単に初期化されただけの状態であり、まだデータベースに保存されていない状態）

![スクリーンショット 2024-05-13 7.07.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/9c8c56da-874e-6257-9429-7af3741a8fa2.png)

- オブジェクトをデータベースに保存するには、saveメソッドを使用する

![スクリーンショット 2024-05-13 7.08.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/1f256af1-1dab-0f94-93f5-98f58bdc95af.png)

- 先ほどsaveした内容が、保存されている

![スクリーンショット 2024-05-13 7.08.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/4df076a2-92b1-0d3a-4a2d-a0f4fcf4f95e.png)

- 記事のリストを表示する

```app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end
```

```app/views/articles/index.html.erb
<h1>Articles</h1>

<ul>
  <% @articles.each do |article| %>
    <li>
      <%= article.title %>
    </li>
  <% end %>
</ul>
```

- 一覧で表示されている

![スクリーンショット 2024-05-13 7.12.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/923146/d0954601-a777-a269-5c9a-71ad2fe086ff.png)

# まとめ
Railsさわる機会がなくなったので、一旦ここまでで止め。久しぶりに違う言語をさわると全くわからないってなるけど、いい勉強になった。


# 参考
- [Railsガイド](https://railsguides.jp/getting_started.html#%E6%AC%A1%E3%81%AB%E5%AD%A6%E3%81%B6%E3%81%B9%E3%81%8D%E3%81%93%E3%81%A8)
- [Visual Studio Code と Docker を使って開発する](https://railstutorial.jp/help#devcontainer)
- [rbenv](https://github.com/rbenv/rbenv)