新米パパの育児留学

新米パパの育児留学

未経験からエンジニアへの転職体験談など "リアル" な情報を発信

IT/WEBエンジニアの転職(未経験/30代可あり)エージェント, サービス比較(p.s.侍の炎上を見て)
全くの未経験からIT/Webエンジニアに転職した私(30代)のロードマップ
30代未経験からIT / Webエンジニアへのリアルな転職体験談4 ”2度目の転職活動から入社へ”
本当に使えるものだけ!出産準備品・ベビー用品で実際に買ってよかったおすすめ10選
クロスバイク  LIG(リグ) MOVE 700Cの組み立て手順まとめ
Ruby初心者におすすめの学習方法「プロを目指す人のためのRuby入門」
Ruby on Rails チュートリアル 完全攻略 概要と演習解答総まとめ

【第1章】Ruby on Rails チュートリアル 5.0(第4版)演習と解答まとめ

Ruby on Rails Tutorial最新版の演習と解答の第1章です。

GEEKLYのIT・WEB・ソーシャルゲーム業界への転職支援サービス

目的

Ruby on Rails チュートリアル 5.0(第4版)を学習中です。

学習を進める中で演習問題の解答がなかった(*1,2)ので、自分なりにまとめていくこととしました。

アウトプットし、自分の理解を深めることを目的としています。 もし、記載内容に誤りがあった場合はコメントいただけると幸いです。

(*1)著者による有償版の解答はあるようです。正式な解答をご希望の方はこちらを参照ください。

Learn Web Development with Rails: Michael Hartl's Ruby on Rails Tutorial | Softcover.io

(*2)旧版に関する解答はありましたが、最新版 5.0(第4版)に関しては検索しても出てきませんでした。

演習問題と解答

演習1.3.2

演習1.3.2.1

<問題> デフォルトのRailsページに表示されているものと比べて、今の自分のコンピュータにあるRubyのバージョンはいくつになっていますか? コマンドラインでruby -vを実行することで簡単に確認できます。

<解答>

$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

演習1.3.2.2

<問題> 同様にして、Railsのバージョンも調べてみましょう。調べたバージョンはリスト 1.1でインストールしたバージョンと一致しているでしょうか?

<解答>

$ rails -v
Rails 5.0.1

1.1でインストールしたバージョンと一致しています。

演習1.3.4

演習1.3.4.1

<問題> リスト 1.8のhelloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。

<解答>

[application_controller.rb]

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  
  def hello
    render html: "hola, mundo!"
  end
end

演習1.3.4.2

<問題> Railsでは「非ASCII文字」もサポートされています。「¡Hola, mundo!」にはスペイン語特有の逆さ感嘆符「¡」が含まれています (図 1.13)17。「¡」文字をMacで表示するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。

<解答>

[application_controller.rb]

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  
  def hello
    render html: "¡Hola, mundo!"
  end
end

演習1.3.4.3

<問題> リスト1.8のhelloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.10のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更します (図 1.14)。

<解答>

[routes.rb]

Rails.application.routes.draw do
    root 'application#goodbye'
end

[application_controller.rb]

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  
  def hello
    render html: "¡Hola, mundo!"
  end
  def goodbye
    render html: "goodbye!"
  end
end

演習1.5.3

1.3.4.1と同じなので省略。

演習1.5.4

演習1.5.4.1

<問題> heroku helpコマンドを実行し、Herokuコマンドの一覧を表示してみてください。Herokuアプリのログを表示するコマンドはどれですか?

<解答>

$ heroku help
Usage: heroku COMMAND [--app APP] [command-specific-options]

Primary help topics, type "heroku help TOPIC" for more details:

  addons    #  manage add-on resources
  apps      #  manage apps (create, destroy)
  auth      #  authentication (login, logout)
  config    #  manage app config vars
  domains   #  manage domains
  logs      #  display logs for an app
  ps        #  manage dynos (dynos, workers)
  releases  #  manage app releases
  run       #  run one-off commands (console, rake)

Additional topics:

  access         #  CLI to manage access in Heroku Applications
  buildpacks     #  manage the buildpack for an app
  certs          #  manage ssl endpoints for an app
  drains         #  list all log drains
  features       #  manage optional features
  git            #  manage local git repository for app
  help           #  list commands and display help
  heroku         #  a topic for the ssl plugin
  keys           #  manage authentication keys
  labs           #  manage optional features
  local          #  run heroku app locally
  login          #  login with your Heroku credentials.
  maintenance    #  manage maintenance mode for an app
  members        #  manage membership in organization accounts
  notifications  #  display notifications
  orgs           #  manage organization accounts
  pg             # 
  pgbackups      #  manage backups of heroku postgresql databases
  pipelines      #  manage collections of apps in pipelines
  plugins        #  manage plugins to the heroku gem
  redis          #  manage heroku redis instances
  regions        #  list available regions
  spaces         #  manage heroku private spaces
  stack          #  manage the stack for an app
  status         #  status of the Heroku platform
  update         #  update the heroku client
  version        #  display version

Herokuアプリのログを表示するには、上記中の「logs」ですね。 logs # display logs for an app

コマンドでいうと以下です。

$ heroku logs

演習1.5.4.2

<問題> 同じく、アプリの状態を調べるためのコマンドはどれですか? 直近に発生したイベントは何でしたか? (ちなみにこのログを調べるコマンドは、本番環境をデバッグするのに便利です)

<解答> アプリの状態を調べるには以下を実行します。稼働状況がわかります。

$ heroku ps

=== web (Free): bin/rails server -p $PORT -e $RAILS_ENV (1)
web.1: up 2017/01/16 05:27:40 +0000 (~ 31m ago)

直近イベントは、人それぞれだと思います。 私の場合は以下の"goodbye"アクションの実行でした。

$ heroku logs

Processing by ApplicationController#goodbye as HTML

GEEKLYのIT・WEB・ソーシャルゲーム業界への転職支援サービス

あわせて読みたい記事

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com

おすすめの本

この本は、初心者にもわかりやすいとエンジニア界隈ではかなり著名な"伊藤 淳一"さんの本です。 私もいつもQiitaやブログでお世話になっており、わかりやすい解説に信頼を寄せていたので購入しました。

期待通り、いや、期待以上にわかりやすく丁寧な解説でしたのでかなり理解が深まったと思います。 私は参考書を読むのは退屈で頭に入ってこないタイプなのですが、わかりやすい解説に加えて実際に手を動かして理解を深められる例題が用意されているので楽しくサクサク進めていけます。

Rubyの基礎はProgateやドットインストールなどで理解した上で読まれると更に理解が深まると思います。 RailsスキルをレベルアップしていくためにもRubyの理解を深めることは非常に効果的です。 Railsチュートリアルを完了した方や、進めている途中の方で"Rubyのステップアップとしての次の一冊"をお探しの方におすすめです。