先日の記事What I'v just discovered in Advanced Rails Recipesでは、あんまり面白くなかったと書いたけれど、今回追加されたレシピには興味を惹く引くものが多かった。
追加されたレシピのタイトルは、著者の Mike Clark のブログで参照してください。
また、前回と同様に簡単なメモを...
Skinny Controller, Fat Model
モデルが汚くなるのを犠牲にしてもコントローラをシンブルにすることを自分と同僚で推奨していたが、そのことが "skinny controller, fat model" (もとネタは Jamis Back のブログらしい) という言葉で、いくつかのレシピで言及されているのを見て、「やっぱりそれでよかったんだ」と思った。
caching up with big guys
cache_fu は ActiveRecord::Base.find の結果をキャッシュする。
acts_as_cached には :include => :tags や :ttl => 5.minutes がある。
returning true do
...
end
というコードがあり、 active support に returning というメソッドがあることを知った。
returning [] do |value|
value << "foo"
value << "bar"
end
という使い方もできる。
activesupport/lib/active_support/core_ext/object/misc.rb を見たら with_options もあったことを思い出した。
しかし、こういうよく知られていない、または自前のメソッドを使うとコードがわかりにくくなる。
Creating meaningful relationships through proxies
group.rb:
has_many :users
user.rb:
class User < ActiveRecord::Base
def self.find_men
self.find(:all, :conditions => "sex = 'male'")
end
end
で、 association proxy からも group.users.find_men として利用できることを知った。考えてみれば当然かもしれないが気づかなかった。
Decouple your javascript with Low Pro
lowpro.jsのEvent.createBehavior, Event.addBehavior を使えば javascript をスッキリ書けるかも
Dynamically Updating Cached pages
動的要素のあるページを page cache にしたときにそのダイナミックな部分を ajax で更新するようにはしたことがあるが、部分だけタイムラグが出てしまうが、この方法だと session とは別の cookie に javascript だけでダイナミック部分を補完できる情報を(i.e:ユーザー名)入れておけば javascript で cookie の中身を使って static page の補完ができるというアイデア。
Handling Multiple Models In One Form
Project has_many :tasks などのときに、Project#new_tasks= でコントローラを小さくする手法。この手法も良く使う。
Responding To Remote Capistrano Prompts
Capistrano でリモートサーバーの script/console セッションを操作する方法が書いてある。試してみよう。
Taking Advantage of Master/Slave Databases
リプリケーションしたDBへのクエリを master/slave で自動で振り分ける
masochism plugin の紹介。使えるかもしれない。
Testing HTML Validity
HTML test plugin の紹介。
たぶん常に有効になっているとウザイので、 rake html_validity test のようにして実行したときだけ有効になるようにすると良いかもしれない。
No comments:
Post a Comment