目的
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