Code Fan 49

中年で開発に目覚めたおじさんの技術ブログ。WordPress・Rails・Cloud9などなど。

【50歳からのRailsアプリ開発 vol.2】大まかなルーティングを静的ページで仮作成。

はじめに

今日はあまり時間もないので、routingだけを作ることに。 書き方もRailsTutorialを確認しつつ、進める。

準備

gemfileは、とりあえずRailsTutorialのままです。

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

普通にbundle install --without productionしておきます。

ブランチもちゃんと分けておきましょう。 git branch -b static-routing

routes.rbの位置

ルーティングを決めるファイル。 今回のRailsのアプリはappという名称で作成しました。 なので、パスはapp/config/routes.rb

作成するパスを決める。

  • トップページ /
  • マイフィード /myfeed
  • 経歴(履歴書) /carrier
  • コンタクト /contact

あとで増えるかもしれないし変わるかもしれないが、これで。

rails g で作成。

リソース作成すべきところばっかりなんだけど、ざっと感じを掴みたいので静的ファイルで作ります。 ざっくりとviewを作成します。 home(トップページ)も予め入れて置いたほうがいいかな。

rails g controller StaticPages myfeed carrier contact home

自動的に作成されたroute.rb。

Rails.application.routes.draw do

get 'static_pages/home'
get 'static_pages/myfeed'
get 'static_pages/carrier'
get 'static_pages/contact'

end

意図したパスになるように修正する。

Rails.application.routes.draw do

  root 'static_pages#home'
  get  '/myfeed',    to: 'static_pages#myfeed'
  get  '/carrier',   to: 'static_pages#carrier'
  get  '/contact', to: 'static_pages#contact'

end

testの修正。

rails g controllerした時点で作成されたstatic_pages_controller_test.rbファイルを修正し、グリーンになるようにしておく。

require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
  
  test "should get home" do
    get root_url
    assert_response :success
  end

  test "should get myfeed" do
    get myfeed_url
    assert_response :success
  end

  test "should get carrier" do
    get carrier_url
    assert_response :success
  end

  test "should get contact" do
    get contact_url
    assert_response :success
  end

end

簡単なテストなので飛ばしたくなりますが、我慢我慢。 いちいちrails t叩くのは面倒なので、これまたRailsTutorialの手法通り、自動化しておく。

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

きちんとグリーンになるのを確認。。。もちろんrails sで表示まで確認しておく。

さいごに。

コメント、マージ、プッシュしてデプロイまで。

git add -A
git commit -m "静的ファイルで仮ルーティング。テストの自動化。テストの作成と確認。"
git checkout master
git merge static-routing
git push
heroku create
git push heroku master

App

しかしすごいですよね。 あっという間に見えるようにできちゃうのはやっぱRailsすげーって思います。

github.com