【Railsチュートリアル】第1-5章　まとめ

## 第1章
### サーバー実行
```ruby:ターミナル

rails server

```

### ファイル確認
```ruby:ターミナル

ls app/controllers/*_controller.rb

```

### Gitの設定内容の確認
```ruby:ターミナル

git config --list

```

### 全ての変更ファイルをステージング
```ruby:ターミナル

git add -A

```

### 現在のステージング状態を知る
```ruby:ターミナル

git status

```

### ステージングされた変更内容をリポジトリに保存
```ruby:ターミナル

git commit -m "Initialize repository"

```

### これまでのコミットメッセージ履歴を確認
```ruby:ターミナル

git log

```

### 直前にコミットした状態まで戻る
```ruby:ターミナル

git restore

```

### ブランチを新たに作成し、移動する
```ruby:ターミナル

git switch -c modify-README

```

### ローカルブランチの一覧を表示
```ruby:ターミナル

git branch

```

### ブランチの変更をマージ
```ruby:ターミナル

git merge modify-README

```

### ブランチを削除
```ruby:ターミナル

git branch -d modify-README

```

### プッシュする
```ruby:ターミナル

git push

```

## 第2章
### リソース作成
```ruby:ターミナル

rails generate scaffold User name:string email:string

```

### データベースをマイグレートする
```ruby:ターミナル

rails db:migrate

```

### リソースに関連するRESTfulルートを自動生成
```ruby:config/routes.rb

resources :users

```

### '/'で呼び出された時に、該当するアクションを呼び出す
```ruby:config/routes.rb

root 'users#index'

```

### 複数持つことができる関連付け
```ruby:app/models/user.rb

has_many :microposts

```

### 一つのみ持つことができる関連付け
```ruby:app/models/micropost.rb

belongs_to :user

```

### コンソールを使う
```ruby:ターミナル

rails console

```

## 第3章
### サンプルアプリケーションを生成する
```ruby:ターミナル

cd ~/environment
rails _7.0.4.3_ new sample_app
cd sample_app/

```

### 定義されたルートに該当するアクションを呼び出す
```ruby:ターミナル

get  "static_pages/home"

```

### 直前のHTTPリクエストが成功したかをチェックする
```ruby:test/controllers/static_pages_controller_test.rb

get static_pages_home_url
assert_response :success

```

### ファイル名を変更する
```ruby:ターミナル

mv app/views/layouts/application.html.erb layout_file

```

### タグ(第1引数)の中に該当文字列(第2引数)があるかをチェックする
```ruby:test/controllers/static_pages_controller_test.rb

assert_select "title", "Home | Ruby on Rails Tutorial Sample App"

```

### ラベル(第1引数)と文字列(第2引数)を関連付ける
```ruby:app/views/layouts/application.html.erb

<% provide(:title, "Home") %>

```

### 生成したHTMLを共通レイアウトに挿入する
```ruby:app/views/layouts/application.html.erb

<%= yield %>

```

## 第4章
### CSS(第1引数)を全てのメディアタイプで使えるようにする
```ruby:app/views/layouts/application.html.erb

<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>

```

### ヘルパーを定義する
```ruby:app/helpers/application_helper.rb

def full_title
end

```

### シングルクォート内の文字列では式展開ができない
```ruby:ターミナル

>> '#{foo} bar'     
=> "\#{foo} bar"

```

### どんなオブジェクトも強制的に論理値に変換する
```ruby:ターミナル

>> !!nil
=> false

```

### 文字列を配列に分割する
```ruby:ターミナル

>>  "foo bar     baz".split     
=> ["foo", "bar", "baz"]

```

### 配列の内容を変更する(メソッドに!をつける)
```ruby:ターミナル

>> a
=> [42, 8, 17]
>> a.sort!
=> [8, 17, 42]
>> a
=> [8, 17, 42]

```

### 文字列を配列に変換する
```ruby:ターミナル

>> a
=> [42, 8, 17, 6, 7, "foo", "bar"]
>> a.join                       
=> "4281767foobar"

```

### %wを使って文字列の配列に変換する
```ruby:ターミナル

>> a = %w[foo bar baz quux]         
=> ["foo", "bar", "baz", "quux"]

```

### 添字に-1を使って配列の長さを選択
```ruby:ターミナル

>> a = (0..9).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> a[2..-1]                         
=> [2, 3, 4, 5, 6, 7, 8, 9]

```

### メソッドの引数を省略
```ruby:ターミナル

>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
>> %w[A B C].map(&:downcase)
=> ["a", "b", "c"]

```

### ハッシュにキーと値を渡す
```ruby:ターミナル

>> user = { name: "Michael Hartl", email: "michael@example.com" }
=> {:name=>"Michael Hartl", :email=>"michael@example.com"}

```

### ハッシュの中のハッシュに値を渡す
```ruby:ターミナル

>>  params[:user][:email]
=> "mhartl@example.com"

```

### リテラルに変換する
```ruby:ターミナル

>> puts :name            
name
>> puts :name.inspect    
:name
>> p :name             
:name

```

### Stringクラス内部ではメソッドや属性を呼び出すときのselfを省略する
```ruby:ターミナル

>> class Word < String             
>>   def palindrome?
>>     self == reverse        
>>   end
>> end

```

### スペースの集まった空白はblankを指す
```ruby:ターミナル

>> "      ".empty?
=> false
>> "      ".blank?
=> true

```

### 　属性に対応するアクセサを自動生成
```ruby:example_user.rb

attr_accessor :name, :email

```

### .newが実行されたときに呼び出されるインスタンス作成メソッド
```ruby:example_user.rb

def initialize(attributes = {})
    @name  = attributes[:name]
    @email = attributes[:email]
end

```

## 第5章
### 様々な属性(第1引数)を付与し、リンク先(第2引数)に遷移する
```ruby:app/views/static_pages/home.html.erb

<%= link_to image_tag("rails.svg", alt: "Rails logo", width: "200"),
                      "https://rubyonrails.org/" %>

```

### 画像をダウンロードする
```ruby:app/views/static_pages/home.html.erb

curl -o app/assets/images/rails.svg -L https://cdn.learnenough.com/rails.svg

```

### BootstrapとSassをインストール
```ruby:ターミナル

bundle install

```

### ファイル作成
```ruby:ターミナル

touch app/assets/stylesheets/custom.scss

```

### パーシャルを作成し、該当するレイアウトを呼び出す
```ruby:app/views/layouts/application.html.erb

<%= render 'layouts/header' %>

```

### 〇〇_pathでアクションを呼べる
```ruby:config/routes.rb

get  "/help",    to: "static_pages#help"

```

### 総合テストを作成
```ruby:ターミナル

rails generate integration_test site_layout

```

### コントローラ作成
```ruby:ターミナル

rails generate controller Users new

```