padrino tips

padrino tips

rspec で test

準備

g project するときに -t rspec すると rspec がすぐ使える。

database へのアクセス

test 環境で migrate しないと table がないと怒られます。

% rake ar:migrate RACK_ENV=test

post

it do の中でpost "/post" して last_response 拾おうとしても、403 が帰ってきちゃいます。 form_tag() 使うなどして token 渡さないと csrf で蹴られちゃうんですね。 テスト環境では外しちゃってもいいかも?

    configure :test do
      set :protect_from_csrf, false      
    end

textarea の行頭空白

.panel-body
  = form_for(:foo) do |f|
    %div.form-group
    = f.text_field(:name)
    %div.form-group
    = f.text_area(:content, cols: 80, rows: 20)

とかすると行頭の空白の扱いが変なので、text_area のとこの = を ~ に変えるとうまくいく。

表示させるときも、

.panel-body~ @page.formatted_content.html_safe

のように ~ を使う。

ソースを読む

g admin_map してできた models/pages.rb, views/pages/* とか読むとためになるかも。

splat

sinatra の時見たく get '/*' do だと params[:splat] に入ってくんない。 どうやら get '/*splat' としてあげないとダメなようだ。