Rails Tutorial 第4版 第1章 演習 解答例
この文書はRails Tutorial第4版第1章の演習に対する個人の解答例です。解答には誤りや不適切な表現が含まれていることがありますが、もし誤謬を見つけたらコメント頂けると嬉しいです。
それでは、やっていきましょう!
- 1.1 はじめに
- 1.2 さっそく動かす
- 1.3 最初のアプリケーション
- 1.3.1 Bundler
- 1.3.2 rails server
- 1.3.3 Model-View-Controller (MVC)
- 1.3.4 Hello, world!
- 1. リスト 1.7のhelloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。
- 2. Railsでは「非ASCII文字」もサポートされています。「¡Hola, mundo!」にはスペイン語特有の逆さ感嘆符「¡」が含まれています (図 1.16)18。「¡」文字をMacで表示するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。
- 3. リスト 1.7のhelloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.9のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更します (図 1.17)。
- 1.4 Gitによるバージョン管理
- 1.5 デプロイする
- 1.6 最後に
1.1 はじめに
1.1.1 前提知識
1. Ruby on Railsで使うRuby gemはどのWebサイトにありますか?ヒント: 分からないときはとにかくググりましょう。
Ruby gemは主にはRubyGemsで、またそれ以外にもGitHubで配布されています。
2. 現時点でのRailsの最新バージョンはいくつですか?
下記のWebサイトで確認できます。2019年7月7日現在、最新版は5.2.3です。 Ruby on Rails | A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.
3. Ruby on Railsはこれまでに何回ダウンロードされたでしょうか?調べてみてください。
下記のWebサイトで確認できます。この文を書いている時点で累計ダウンロード数は179,872,069です。 rails | RubyGems.org | コミュニティのGemホスティングサービス
1.1.2 この本における取り決め
演習なし。
1.2 さっそく動かす
1.2.1 開発環境
演習なし。
1.2.2 Railsをインストールする
演習なし。
1.3 最初のアプリケーション
1.3.1 Bundler
演習なし。
1.3.2 rails server
1. デフォルトのRailsページに表示されているものと比べて、今の自分のコンピュータにあるRubyのバージョンはいくつになっていますか? コマンドラインでruby -vを実行することで簡単に確認できます。
$ ruby -v ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin18]
2. 同様にして、Railsのバージョンも調べてみましょう。調べたバージョンはリスト 1.1でインストールしたバージョンと一致しているでしょうか?
$ rails -v Rails 5.2.3
最新版をインストールしたので一致していません。
1.3.3 Model-View-Controller (MVC)
演習なし。
1.3.4 Hello, world!
1. リスト 1.7のhelloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。
application_controller.rb
class ApplicationController < ActionController::Base protect_from_forgery with: :exception def hello # render html: "hello, world!" render html: "hola, mundo!" end end
2. Railsでは「非ASCII文字」もサポートされています。「¡Hola, mundo!」にはスペイン語特有の逆さ感嘆符「¡」が含まれています (図 1.16)18。「¡」文字をMacで表示するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。
application_controller.rb
... def hello # render html: "hello, world!" # render html: "hola, mundo!" render html: "¡hola, mundo!" end ...
3. リスト 1.7のhelloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.9のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更します (図 1.17)。
application_controller.rb
def goodbye render html: "goodbye, world!" end
routes.rb
Rails.application.routes.draw do # root 'application#hello' root 'application#goodbye' end
1.4 Gitによるバージョン管理
1.4.1 インストールとセットアップ
演習なし。
1.4.2 Gitのメリット
演習なし。
1.4.3 Bitbucket
演習なし。
1.4.4 ブランチ、編集、コミット、マージ
演習なし。
1.5 デプロイする
1.5.1 Herokuのセットアップ
演習なし。
1.5.2 Herokuにデプロイする (1)
演習なし。
1.5.3 Herokuにデプロイする (2)
1. 1.3.4.1と同じ変更を行い、本番アプリでも「hola, mundo!」を表示できるようにしてください。
application_controller.rb
def hello # render html: "hello, world!" render html: "hola, mundo!" # render html: "¡hola, mundo!" end
routes.rb
Rails.application.routes.draw do root 'application#hello' # root 'application#goodbye' end
コンソール
$ git add app/controllers/application_controller.rb config/routes.rb $ git commit -m "change hello method to show \"hola, mundo!\"" $ git push $ git push heroku master
2. 1.3.4.1と同様、ルートへのルーティングを変更してgoodbyeアクションの結果が表示されるようにしてください。またデプロイ時には、Git pushのmasterをあえて省略し、git push herokuでデプロイできることを確認してみてください。
routes.rb
Rails.application.routes.draw do # root 'application#hello' root 'application#goodbye' end
コンソール
$ git add config/routes.rb $ git commit -m "change ApplicationController's method from hello to goodbye in root" $ git push $ git push heroku
1.5.4 Herokuコマンド
1. heroku helpコマンドを実行し、Herokuコマンドの一覧を表示してみてください。Herokuアプリのログを表示するコマンドはどれですか?
$ heroku help CLI to interact with Heroku VERSION heroku/7.26.2 darwin-x64 node-v11.14.0 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 <- Herokuアプリのログを表示するコマンド maintenance enable/disable access to app members manage organization members notifications display notifications orgs manage organizations pg manage postgresql databases pipelines groups of apps that share the same codebase 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 disposable apps built on GitHub pull requests 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 setup HTTP notifications of app activity
2. 上の演習で見つけたコマンドを使って、Herokuアプリの最近のログ (log) を調べてみましょう。直近に発生したイベントは何でしたか? (このログを調べるコマンドを覚えておくと、本番環境の不具合を見つけるときに役立ちます)
$ heroku logs 2019-07-07T18:24:18.346528+00:00 app[api]: Release v1 created by user railstutorial@example.com 2019-07-07T18:24:18.346528+00:00 app[api]: Initial release by user railstutorial@example.com 2019-07-07T18:24:18.550232+00:00 app[api]: Enable Logplex by user railstutorial@example.com 2019-07-07T18:24:18.550232+00:00 app[api]: Release v2 created by user railstutorial@example.com ...... 2019-07-07T20:11:55.516940+00:00 app[web.1]: === puma shutdown: 2019-07-07 20:11:55 +0000 === 2019-07-07T20:11:55.516942+00:00 app[web.1]: - Goodbye! 2019-07-07T20:11:55.516944+00:00 app[web.1]: Exiting
直近に発生したイベントは終了処理でした。
1.6 最後に
1.6.1 本章のまとめ
演習なし。
完