文字化けしないメールの送り方

UTF8の一部の文字(〜とか)を含むメールも文字化けしないで送る方法の紹介
gettextを利用して一部に修正を加えています。
NKFのオプションに --cp932 を加えているだけなので、
gettext にパッチを当てるのが一番正しい気もしますが、一応これでいけます。

require 'gettext/rails'
GetText.locale = 'ja'

class HogeMailer < ActionMailer::Base
  @@charset='iso-2022-jp'

  def base64(text, charset="iso-2022-jp", convert=true)
    if convert
      if charset == "iso-2022-jp"
        text = NKF.nkf('-j --cp932 -m0', text)
      end
    end
    text = TMail::Base64.folding_encode(text)
    "=?#{charset}?B?#{text}?="
  end
  
  def create!(*arg) #:nodoc:
    create_without_gettext!(*arg)
    if Locale.get.language == "ja"
      require 'nkf'
      @mail.subject = base64(@mail.subject)
      part = @mail.parts.empty? ? @mail : @mail.parts.first
      if part.content_type == 'text/plain'
        part.charset = 'iso-2022-jp'
        part.body = NKF.nkf('-j --cp932', part.body)
      end
    end
    @mail
  end
end

携帯電話のブラウザバック

携帯から元々POSTで来たページにブラウザバックで戻った時に、
GETで再読み込みをしてくるやつと、POSTなのにQueryString以外の
paramsがなくなっているやつがいる気がする。

で対策として、

verify :method => :post, :redirect_to => {:action => :error}

だと不十分なので、なんかないかなと調べたら、

verify :method => :post, :params => :hoge, :redirect_to => {:action => :error}

で特定のパラメータ(ここでは、params[:hoge])があることを保証してくれるらしい。
でも、key名をちゃんと指定しないといけないのでいまいち。
なにかいい方法はないものか。

acts_as_cached

ActiveRecord のキャッシュが簡単にできる
acts_as_cached を探して彷徨ったのでメモ書き。

以下を参考にして取得してください。
cache_fu に名前が変わったようです。

http://errtheblog.com/posts/57-kickin-ass-w-cachefu

ちなみに、

gem install acts_as_cached

でインストールされるものとは別の物です。