「Ruby on Rails」カテゴリーアーカイブ

RSpec の使い方

Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)
RSpec-1.1.4: Overview
Railsアプリのプラグインとしてインストールする

$ cd vendor/plugins
$ git clone git://github.com/dchelimsky/rspec.git
$ git clone git://github.com/dchelimsky/rspec-rails.git
$ cd ../../
$ ruby script/generate rspec

gitのインストールが必要。
Git - Fast Version Control System
mac osxはインストーラがある。Windowsはcygwinでインストールできる。

rails2の、authenticity_token出力をとめる

rails2の、authenticity_token出力をとめる
rails2から導入されたauthenticity_tokenによるCSRF対策を無効にする方法。
この検証に失敗した場合、以下の例外が発生する。

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken)

特定のアクションでauthenticity_tokenの出力、検証を無効にする。

class TestController < ApplicationController
  protect_from_forgery :except => [:hello]
  def hello
    self.allow_forgery_protection = false
  end
end

コントローラのアクションすべてでauthenticity_tokenの出力、検証を無効にする。

class ApplicationController < ActionController::Base
  #protect_from_forgery # See ActionController::RequestForgeryProtection for details
  self.allow_forgery_protection = false
end

ActiveRecordオブジェクトの配列のmap(collect)

たとえば、

class Member < ActiveRecord::Base
end

というモデルがあり、membersテーブルにはnameカラムがあるとする。
すると、

members = Member.find(:all)
member_names = members.map(&:name)

というようにmap(またはcollect)が使える。
これは、以下のようにActiveSuppoprtにSymbol#to_procが定義されているからだ。

class Symbol
  def to_proc
    Proc.new { |obj, *args| obj.send(self, *args) }
  end
end

Symbol#to_procのおかげで、上記のmapのコードは、下記と同じことになる。

members = Member.find(:all)
member_names = members.map { |member| member.name }