【第1章】Ruby on Rails チュートリアル 6.0（第6版）演習解説

#はじめに
Rails初学者です。解説をして理解を深めるため書きました。
記載内容に間違いや、分かりづらい場合はコメントしていただけると幸いです。

[Ruby on Rails チュートリアル 第一章](https://railstutorial.jp/chapters/beginning?version=6.0)
##演習1.3.2
####1.デフォルトのRailsページに表示されているものと比べて、今の自分のコンピュータにあるRubyのバージョンはいくつになっていますか? コマンドラインでruby -vを実行することで簡単に確認できます。
```terminal:ターミナル
$ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
```
'ruby -v'とコマンドを打つとバージョンの確認ができます。
####2.同様にして、Railsのバージョンも調べてみましょう。調べたバージョンはリスト 1.2でインストールしたバージョンと一致しているでしょうか?
```terminal:ターミナル
 $ rails -v
Rails 6.0.3
```
'rails -v'とコマンドを打つとバージョンの確認ができます。

##演習1.3.3
####1.リスト 1.9のhelloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。
```rb:/app/controllers/application_controller
def hello
  render html:"hola,mundo!"
end
```
'hello,world!'を'hola,mundo!'に書き換えます。
※'hola,mundo!'とはスペイン語で直訳すると'こんにちは、世界'です。
####なぜ表示されるのか？
/app/views/layouts/applicationのbodyタグに<%= yield %>と書いてあります。

```erb:/app/views/layouts/application
<!DOCTYPE html>
<html>
  <head>
    <title>HelloApp</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%= yield %>
  </body>
</html>
```
この中にhelloアクションの書き換えた'hola,mundo!'が置き換えられます。

```erb:/app/views/layouts/application
<!DOCTYPE html>
<html>
  <head>
    <title>HelloApp</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    hola,mundo!　
  </body>
</html>
```
そのため、ブラウザで'hola,mundo!'と表示されます。　
####2.Railsでは「非ASCII文字」もサポートされています。「¡Hola, mundo!」にはスペイン語特有の逆さ感嘆符「¡」が含まれています（図 1.23）17 。「¡」文字をMacで表示するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。
```rb:/app/controllers/application_controller
def hello
  render html:"¡Hola, mundo!"
end
```

####3.リスト 1.9のhelloアクションを参考にして、２つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.11のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更します（図 1.24）。
```rb:/app/controllers/application_controller
class ApplicationController < ActionController::Base
  
  def hello
    render html:"¡Hola, mundo!"
  end
  
  def goodbye
    render html:"goodbye, world!"
  end
end
```
```rb:/config/routes.rb
Rails.application.routes.draw do
  root 'application#goodbye'
end
```
application_controllerにgoodbyeアクションを追加し、ルーティングを'hello'から'goodbye'に変更することで、goodbyeアクションが処理されます。

##演習1.5.3 
####1. "1.3.4.1と同じ変更を行い、本番アプリでも「hola, mundo!」を表示できるようにしてください。"
1.3.3の演習課題１に変更し、gitをadd,commit,pushし、Herokuにデプロイします
####2. "1.3.4.1と同様、ルートへのルーティングを変更してgoodbyeアクションの結果が表示されるようにしてください。またデプロイ時には、Git pushのmasterをあえて省略し、git push herokuでデプロイできることを確認してみてください。"

1.3.3の演習課題３に変更し、gitをadd,commit,pushし、Herokuにデプロイします。

gitに関してはこちらの動画がわかりやすいので参考にしてください。
[【Git入門】サルでも分かるGit入門の前に！Git使い方高速入門編【入門は5分で十分だと思います】](https://www.youtube.com/watch?v=i1L3A0SLDyg)
##演習1.5.4
####1.heroku helpコマンドを実行し、Herokuコマンドの一覧を表示してみてください。Herokuアプリのログを表示するコマンドはどれですか?

```terminal:ターミナル
$ heroku help
CLI to interact with Heroku

VERSION
  heroku/7.47.11 linux-x64 node-v12.16.2

USAGE
  $ heroku [COMMAND]

COMMANDS
  access          manage user access to apps
  addons          tools and services for developing, extending, and operating your　app
  apps            manage apps on Heroku
  auth            check 2fa status
  authorizations  OAuth authorizations
  autocomplete    display autocomplete installation instructions
  buildpacks      scripts used to compile apps
  certs           a topic for the ssl plugin
  ci              run an application test suite on Heroku
  clients         OAuth clients on the platform
  config          environment variables of apps
  container       Use containers to build and deploy Heroku apps
  domains         custom domains for apps
  drains          forward logs to syslog or HTTPS
  features        add/remove app features
  git             manage local git repository for app
  help            display help for heroku
  keys            add/remove account ssh keys
  labs            add/remove experimental features
  local           run Heroku app locally
  logs            display recent log output
  maintenance     enable/disable access to app
  members         manage organization members
  notifications   display notifications
  orgs            manage organizations
  pg              manage postgresql databases
  pipelines       manage pipelines
  plugins         list installed plugins
  ps              Client tools for Heroku Exec
  psql            open a psql shell to the database
  redis           manage heroku redis instances
  regions         list available regions for deployment
  releases        display the releases for an app
  reviewapps      manage reviewapps in pipelines
  run             run a one-off process inside a Heroku dyno
  sessions        OAuth sessions
  spaces          manage heroku private spaces
  status          status of the Heroku platform
  teams           manage teams
  update          update the Heroku CLI
  webhooks        list webhooks on an app
```
herokuのログを確認するのは、'logs'です。

```terminal:ターミナル
logs            display recent log output
```

####2.上の演習で見つけたコマンドを使って、Herokuアプリの最近のログ（log）を調べてみましょう。直近に発生したイベントは何でしたか?（このログを調べるコマンドを覚えておくと、本番環境の不具合を見つけるときに役立ちます）
```terminal:ターミナル
$ heroku logs
.
.
.
2021-01-30T21:29:08.679991+00:00 heroku[router]: 
at=info method=GET path="/favicon.ico" 
host=rails-tutorial-hello-2345.herokuapp.com 
request_id=cf85211d-15c9-45b7-8bc5-bdfb4cd5f022 
fwd="126.74.95.67" dyno=web.1 connect=0ms 
service=1ms status=200 bytes=143 protocol=https
```
人によって変わります。僕はherokuにルーティングしたのが直近に発生したイベントでした。