ensure節の値は無視される
何回か読んでいてわかっているはずなのにまたやってしまったので、忘れないように書いておきます。
間違った例
def wrong_case hs = {} hs[:login] = "123" hs[:email] = params[:user][:email] # params[:user]==nilだと例外発生 hs[:ipadr] = "127.0.0.1" rescue ensure hs end
これで Hashが返ってくると思いきや、エラーがなければ "127.0.0.1"が返ってきます。エラーの場合は nilが返ります。