野ログはノロキュアMaxHeart
2009-03-09
_ scriptコマンドで作業ログを取得する。
今までscreenで作業してそのログコピペみたいにしていたんだけど、scriptというログをとるためのコマンドがあったのでメモメモ。
script 保存するファイル名
で新しくシェルが立ち上がってそのシェルをexitするまでの全ての出力をファイルに保存してくれる。
script -c sh ./test.log date echo "hogehogehoge" date exit
という感じで実行すると(zshとかでやっちゃうと色の情報とかめんどいのでshを指定)
./test.log
スクリプトは 2009年03月09日 17時39分33秒 に開始しました$ date 2009年 3月 9日 月曜日 17:39:35 JST $ echo "hogehogehoge" hogehogehoge $ date 2009年 3月 9日 月曜日 17:39:42 JST $ exit スクリプトは 2009年03月09日 17時39分44秒 に終了しました
という感じになると。
参考
http://blog.miraclelinux.com/ctd/2006/08/post_a6c8.html
上のURLの後半部分のシェルスクリプトにまとめてそれを実行するたびにその作業の日付付きのログをとるとかホントいい意味でプロですね。
_ RSpec on RailsのControllerのテストで実際にviewのレンダリングを行わせる。
RSpec on Railsではviewのテストとcontrollerのテストは分離されていて、別々に書くようになっている。
ViewのテストとControllerのテストを切り分けて書くことが可能なのは便利なのだが、
Controllerのテストが通っているからといってレンダリングが成功することが保証されないことが難点だ。
そのようなテストはStoryテストで行うことが推奨されている?ようなのだが
integrate_viewsを利用することでControllerExamplesでも実際にビューのレンダリングまで行わせることが可能なようだ。
Controllerの責務、Viewの責務を考えた時に、ControllerはViewで必要なインスタンス変数を定義するまでが責務でありレンダリング成功はControllerの担当外であることは理解できるのだが、きちんとStoryテストを書くことができていない現在、ControllerのテストでViewのレンダリング成功までを追いかけることにしたい。
サンプル
describe "WelcomeController" do
integrate_views
describe "#index"
before do
get :index
end
it "リクエストが成功する" do
response.should be_sucess
end
it "welcome/index が描画される" do
response.should render_template("welcome/index")
end
end
end
上記のテストだとViewのレンダリング中にエラーが発生する場合
get :index
でエラーが発生するのでテストが通らない。
integrate_views
ではない場合は、renderの中は実行されないのでビューのエラーはひろえない。
参考URL
http://rspec.rubyforge.org/rspec-rails/1.1.12/classes/Spec/Rails/Example/ControllerExampleGroup.html
integrate_viewsを使わない方を推奨しているみたい
_ fieldWithErrorsのタグを変更する。
何回かググった気がするのでメモ。
cssでdisplay:inlineで対応したと思ったらモバイル版ではまる。
みたいなw
Validationにひっかかったフィールドに対して個別にCSS等を設定できるように
<div class="fieldWithErrors">〜</div>
という風にかこってくれる機能があるのですが、
divでかこってくれちゃうために、意図しない改行が入ってしまう。
ならCSSでdisplay:inlineすればいいんじゃね?
モバイル版うぜええええ!!!
ということになった後にdiv->spanに変える方法。
environment.rbの下の方に
ActionView::Base.field_error_proc = Proc.new {|html_tag, instance|
%(<span class="fieldWithErrors">#{html_tag}</span>)
}
とかけばOK。
モバイル版かどうか判断してほげほげなんてのも普通にできそうですね。
めんどいので今回はパスしますが。
あるある!<br>ラジオボタンのときに改行入ったりしてうざいですよね。
Railsで開発してると皆通る道ですねw