Rails Tutorial 第三章 簡易まとめ (コントローラ生成まで)

  • 0
    いいね
  • 0
    コメント

    セットアップ

    sample_appの生成
    
    $ cd ~/workspace
    $ rails _5.1.2_ new sample_app
    $ cd sample_app/
    

    基本二章と同じだが、今回はテストグループを用意

    gemfile
    
    source 'https://rubygems.org'
    
    gem 'rails',        '5.1.2'
    gem 'puma',         '3.9.1'
    gem 'sass-rails',   '5.0.6'
    gem 'uglifier',     '3.2.0'
    gem 'coffee-rails', '4.2.2'
    gem 'jquery-rails', '4.3.1'
    gem 'turbolinks',   '5.0.1'
    gem 'jbuilder',     '2.7.0'
    
    group :development, :test do
      gem 'sqlite3', '1.3.13'
      gem 'byebug',  '9.0.6', platform: :mri
    end
    
    group :development do
      gem 'web-console',           '3.5.1'
      gem 'listen',                '3.0.8'
      gem 'spring',                '2.0.2'
      gem 'spring-watcher-listen', '2.0.1'
    end
    
    group :test do
      gem 'rails-controller-testing', '1.0.2'
      gem 'minitest-reporters',       '1.1.14'
      gem 'guard',                    '2.13.0'
      gem 'guard-minitest',           '2.4.4'
    end
    
    group :production do
      gem 'pg', '0.18.4'
    end
    
    # Windows環境ではtzinfo-dataというgemを含める必要があります
    gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
    
    
    $ bundle update
    $ bundle install --without production
    $ git init
    $ git add -A
    $ git commit -m "Initialize repository"
    

    同じ流れ。

    最初のアプリケーションのときと同様に、まずはアプリケーションのルートディレクトリにあるREADME.mdファイルを更新して、具体的な作業内容をわかりやすく記入

    README

    書き終わったら、この変更をコミットします。

    $ git commit -am "Improve the README"
    

    後でproduction環境にプッシュするときに悩まずに済むよう、アプリをなるべく早い段階でHerokuにデプロイしておくとよいでしょう
    (RailsのデフォルトのページはHeroku上ではうまく表示されない仕様になっています。このため、次のような変更を加えないとデプロイが成功したかどうかが分かりづらい、というのが本当の理由です。)

    helloアクションをApplicationコントローラーに追加する

    app/controllers/application_controller.rb
     class ApplicationController < ActionController::Base
      protect_from_forgery with: :exception
    
      def hello
        render html: "hello, world!"
      end
    end
    

    ルートルーティングを設定する

    config/routes.rb
     Rails.application.routes.draw do
      root 'application#hello'
    end
    

    終わったら、次のように変更をコミットしてHerokuにプッシュします。

    $ git commit -am "Add hello"
    $ git push
    $ heroku create
    $ git push heroku master
    
    

    静的ページの生成

    コントローラ生成

    ブランチをきって

    $ git checkout -b static-pages

    コントローラーと共にアクションの追加

    $ rails generate controller StaticPages home help
    
    $ git add -A
    $ git commit -m "Add a Static Pages controller"
    $ git push -u origin static-pages #ブランチ名
    

    最後のコマンドでは、static-pagesトピックブランチをBitbucketにプッシュしています。以後は、git push でok

    StaticPagesコントローラ内のhomeアクションとhelpアクションで使うルーティング

    config/routes.rb
     Rails.application.routes.draw do
      get  'static_pages/home'
      get  'static_pages/help'
      root 'application#hello'
    end
    

    サーバーを立ち上げて/static_pages/homeにアクセスして結果を表示してみる

    (コラム)元に戻すDestroyコマンド、Rollbackコマンド

    自動生成されたコードを元に戻すためには、新規作成されたファイルを削除するだけではなく、既存のファイルに挿入されたコードも削除する必要がある。このようなときは、「generate」という言葉に因んで、rails destroyというコマンドを実行することで元に戻すことができます。例えば次の2つのコマンドは、自動生成と、それに対応する取り消し処理の例です。

    $ rails generate controller StaticPages home help
    $ rails destroy  controller StaticPages home help**
    

    また、第2章でも簡単に紹介しましたが、マイグレーションの変更を元に戻す方法も用意されています。詳細は第6章で説明しますが、簡単に紹介すると、まずdb:migrateでデータベースのマイグレーションを変更します。
    元に戻したいときは、db:rollbackで1つ前の状態に戻します。

      $ rails db:migrate
      $ rails db:rollback
    

    最初の状態に戻したいときは、VERSION=0オプションを使います。

      $ rails db:migrate VERSION=0
    

    マイグレーションは逐次的に実行され、それぞれのマイグレーションに対してバージョン番号が付与されます。したがって、上記の0を別の数字に置き換えることによって、指定したバージョンの状態に戻すことができます。

    ビューとは

    ブラウザを開いたときの情報は何処にはいっているか。
    home,helpアクションが空になっているので、/static_pages/homeにアクセスしても、単に対応するビューが出力されるだけとなっている。
    ここでいうとcontrollコマンドが実行された際に同時に作られた以下である。
    確認と同時に引用書き換え。

    app/views/static_pages/home.html.erb
     <h1>Sample App</h1>
    <p>
      This is the home page for the
      <a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
      sample application.
    </p>
    
    app/views/static_pages/help.html.erb
     <h1>Help</h1>
    <p>
      Get help on the Ruby on Rails Tutorial at the
      <a href="https://railstutorial.jp/help">Rails Tutorial help page</a>.
      To get help on this sample app, see the
      <a href="https://railstutorial.jp/#ebook"><em>Ruby on Rails Tutorial</em>
      book</a>.
    </p>