Try T.M Engineer Blog

「アウトプットする事は大事だ」と思って初めたブログ、プログラミング、独り語り、etc

【Ruby on Railsチュートリアル(第4版)】第1章 ゼロからデプロイまで(演習と解答)

Ruby on Rails チュートリアルとは?

Ruby on Railsチュートリアル: RailsでWeb開発を学ぶ』私もこの様なWebサイトがある事を知らなかったのですが、Ruby業界でRailsを使い始めるなら、まず最初に初める入門サイトだそうです。電子書籍版は有料ですが、Webサイトにあるオンライン版は無料なので、誰でも読む事ができます。
railstutorial.jp

全部で14章あり、かなりのボリュームですが、これを読む事でRailsの基礎を学ぶ事ができ、ちょっとしたWebアプリケーションを作れるレベルにはなれる?とのこと。
各章毎に演習問題が複数あり、これを解いていく事でRailsへの理解を深めていく事ができるそうです。

さて・・・?

これからですが、私も少しずつですが、このRuby on Railsチュートリアルに挑戦したいと思います。
進捗記録用に演習問題の解答をブログに書きつつ理解を深めていこうと思います。
演習の解答はネタバレを含みますので、まだ演習に挑戦していない方のために、チュートリアルのブログはひっそりとアップロードする方針で行こうかと思います。

演習と解答

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

$ ruby -v
ruby 2.6.0dev (2018-03-11 trunk 62724) [x86_64-darwin16]

2. 同様にして、Railsのバージョンも調べてみましょう。調べたバージョンはリスト 1.1でインストールしたバージョンと一致しているでしょうか?
【解答】以下の通り。

$ rails -v
Rails 5.1.4

<演習>
1. リスト 1.7のhelloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。
【解答】以下の通り。
■app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "hello, mundo!"
  end
end

2. Railsでは「非ASCII文字」もサポートされています。「¡Hola, mundo!」にはスペイン語特有の逆さ感嘆符「¡」が含まれています (図 1.16)。「¡」文字をMacで表示するには、Optionキーを押しながら1キーを押します。この文字をコピーして自分のエディタに貼り付ける方が早いかもしれません。
【解答】以下の通り。
■app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "¡hello, mundo!"
  end
end

3. リスト 1.7のhelloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.9のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更します (図 1.17)。
【解答】以下の通り。
■app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def hello
    render html: "¡hello, mundo!"
  end

  def goodbye
    render html: "goodbye, world!"
  end
end

■config/routes.rb

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