もっかい見直してみたのでメモなど控え

Tutorial を目視ベースで再確認中。以下にメモを控え。

gem

コマンドラインにオプション付けるの忘れる人とかいちいち入力するのが面倒臭い人向けに以下な .gemrc を作っておけば良い模様。

gem: --no-ri --no-rdoc

.gitignore

Rails 向けの .gitignore が以下らしい。

.bundle
db/*.sqlite3*
log/*.log
*.log
/tmp/
doc/
*.swp
*~
.project
.DS_Store

Heroku

アカウント取得後に以下を云々、とあります。

  • まず、heroku な gem を導入。
$ gem install heroku
  • ssh の公開鍵を登録
$ heroku keys:add
  • remote "heroku" を .git/config に追加
$ heroku create

これで後は git push origin heroku すれば deploy される、はず。。

source 'http://rubygems.org'

gem 'rails', '3.0.9'

gem 'sqlite3', '1.3.3', :group => :development

scaffold

user な scaffold が例示されております。

$ rails generate scaffold User name:string email:string
      invoke  active_record
      create    db/migrate/20100615004000_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/unit/user_test.rb
      create      test/fixtures/users.yml
       route  resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    test_unit
      create      test/functional/users_controller_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      create        test/unit/helpers/users_helper_test.rb
      invoke  stylesheets
      create    public/stylesheets/scaffold.css
$

config/routes.rb の

  resources :users

は generate scaffold で追加されているのかどうか。そして Chapter 2 は _No real understanding_ ってナニと共に終わってるあたりが、とほほほ的。

RSpec 云々?

Chapter 3 はいきなり RSpec の環境設定してます。まず -T 付けてプロジェクト作って

$ cd ~/rails_projects
$ rails new sample_app -T
$ cd sample_app

Gemfile を以下にして

source 'http://rubygems.org'

gem 'rails', '3.0.9'
gem 'sqlite3', '1.3.3'

group :development do
  gem 'rspec-rails', '2.6.1'
end

group :test do
  gem 'rspec-rails', '2.6.1'
  gem 'webrat', '0.7.1'
end

導入したら

$ bundle install

以下なコマンドの実行が必要らしい。

$ rails generate rspec:install

全然記憶にないですな。で、ここを始点に Rails で静的ページを出力云々な動作の確認をしつつ試験も行ないつつ、な模様。

Static Pages

public 配下の云々というあたりはスルー。このサンプルでは generate controller で云々してますね。

$ rails generate controller Pages home contact
      create  app/controllers/pages_controller.rb
       route  get "pages/contact"
       route  get "pages/home"
      invoke  erb
      create    app/views/pages
      create    app/views/pages/home.html.erb
      create    app/views/pages/contact.html.erb
      invoke  rspec
      create    spec/controllers/pages_controller_spec.rb
      create    spec/views/pages
      create    spec/views/pages/home.html.erb_spec.rb
      create    spec/views/pages/contact.html.erb_spec.rb
      invoke  helper
      create    app/helpers/pages_helper.rb
      invoke    rspec
$

そうか静的ページなので model が不要なのね。で、この後 autotest がなんちゃらとか home とか contact なコンテンツが云々という記述がありますがスルー。
とりあえず views とか helpers な試験を削除している模様。

$ git rm -r spec/views
$ git rm -r spec/helpers

ちなみに controller な試験は home とか contact を GET に行って 200 が戻ること、な試験が書いてあるようです。

spork も略。でもこれ、いらいら感が絶対軽減されるはずなので使うべきかな、って思ってます。で、about というコンテンツを作るということで試験から書きはじめていますね。
以下を追加なさっております。

  describe "GET 'about'" do
    it "should be successful" do
      get 'about'
      response.should be_success
    end
  end

あと、以下の記述についても言及あり。

describe PagesController do
  render_views

吐きだす view も確認したいので、ということなのか。
んで上記の試験をパスするには

  • app/controllers/pages_controller.rb 修正
  • app/views/pages/about.html.erb 追加
  • config/routes.rb 修正

が必要な模様。詳細は略します。次に表示の試験を追加してますね。

it "should have the right title" do
  get 'home'
  response.should have_selector("title",
                    :content => "Ruby on Rails Tutorial Sample App | Home")
end

なカンジ。中身てきにはいっちゃん右の | の横の文字列が異なる形。で、試験を追加して red 確認後に app/views/pages 配下のソレ達に情報を追加して試験を通すんですが、ここから DRY な抽象化が開始されていく模様。

  • controller の属性を view 側で使えるのでそれで云々とか
  • application.html.erb と yield 使って DRY な抽象化とか

で、Chapter 3 は終了する模様。

続きは

Chapter 5 からでとりあえずエントリ投入。