読者です 読者をやめる 読者になる 読者になる

新米パパの育児留学

子供との幸せな時間を今だけではなく、一生大切にしたいという思いから、育休中にプログラミングを学習しエンジニアを目指します。

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

プログラミング プログラミング-Rails_チュートリアル

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

f:id:mochikichi321:20170206212242p:plain

目的

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版)に関しては検索しても出てきませんでした。

プログラミングを学習し始めたきっかけについてはこちら

mochikichi.hatenablog.com

演習問題と解答

演習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

関連記事

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com

mochikichi.hatenablog.com