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
すると、エラー出なくなった。ネームスペースの問題?
同じように、頭に「::」を付けたらうまくいった。
うーん、まだまだ Ruby を理解できてないなぁ。