ActiveHeartはまりメモ

携帯用アプリの作成ではまった点をメモ

TransSid

セッションをURLで管理するためのプラグインだけど、2nd life - ActiveHeartのページに書いてあるとおりに設定してもエラーになってうまくいかない。

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid] = true

エラー内容:

NameError (uninitialized constant CgiRequest):

ぐぐってみると、同じような現象にはまってる人を発見。

そこで2nd lifeさんのActiveHeartですよ。

利用方法は

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid] = true

のようにどこかでActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid]をtrueにします。
このタイミングはいつでもOKなので、before_filterで携帯かどうかを判別して、携帯ならtrueに、
といった使い方も可能です。

とあったので、携帯からアクセスされるコントローラーのbefore_filterの中に上記の記述を含めましたが、

uninitialized constant CgiRequest

というエラーが出て、1時間以上ハマってしまった。
どうもconfig/environment.rbに記述すると動くのだけど。
ふと思い立って頭に::をつけてみることにした。

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid] = true

すると、エラー出なくなった。ネームスペースの問題?

I.T.System - ruby初心者故の壁

同じように、頭に「::」を付けたらうまくいった。


うーん、まだまだ Ruby を理解できてないなぁ。