Ruby on Rails Tutorial

Chapter 5 から再開。最初はレイアウトが云々とか CSS がなんたらとかなのでスルー。5.2.1 節で Integration tests に関する記述がある模様。
とりあえず以下で試験が作れる模様。

$ rails generate integration_test layout_links

title なタグの中身が、な試験なのか。

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title', :content => "Home")
  end

layout_links_spec.rb という割には title なタグの中身をチェックしてますが、これは別途修正されていくのだと思いたい。

Rails Routes

ちょっときちんと読もう。とりあえず routes.rb の match とか root などというソレは面白いですね。あとコントローラクラスとそのメソドの記述の方法も面白い。

SampleApp::Application.routes.draw do
  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  match '/help',    :to => 'pages#help'

  root :to => 'pages#home'
  .
  .
  .
end

ただ、次の節の Named routes 云々はちょっと微妙。

User signup: A first step

このあたりまで何とかした痕跡がローカルに残ってます。とりあえずテキストによれば users な controller 作って

$ rails generate controller Users new
      create  app/controllers/users_controller.rb
       route  get "users/new"
      invoke  erb
      create    app/views/users
      create    app/views/users/new.html.erb
      invoke  rspec
      create    spec/controllers/users_controller_spec.rb
      create    spec/views/users
      create    spec/views/users/new.html.erb_spec.rb
      invoke  helper
      create    app/helpers/users_helper.rb
      invoke    rspec
      create    spec/helpers/users_helper_spec.rb
$

試験を削除。

$ rm -rf spec/views
$ rm -rf spec/helpers

あと、諸々を云々してるんですが、やっぱ config/routes.rb で URL 作れるのは面白いな、と思ったり。昔の Rails がどうだったか記憶にないですが。

SampleApp::Application.routes.draw do
  get "users/new"

  match '/signup',  :to => 'users#new'

あら、でも get "users/new" って何だば。以下なフォローがありますね。

Note that we have kept the rule get "users/new", which was generated automatically by the Users controller generation in Listing 5.23. Currently, this rule is necessary to route /users/new correctly, but it doesn’t follow the proper REST conventions (Table 2.2), and we will eliminate it in Section 6.3.3.

ぢつは

明日、土曜出勤の振替で同居人は仕事でムスメは所要 (ウチナーンチュ大会?) でお出かけらしくムスコの子守ついででこのあたりをがっつり確認の方向。
とりあえずさくっと Web なナニが launch できますぜ、なソレを持っておきたいですよね、ということにて。