rails 4.1.0にあげたらJSON::ParserErrorになった問題
rails 4.1.0に上げてみました。 Gemfileを書いて、
bundle update
して、
bundle exec rake rails:update
でひたすらYを選択しています。
ちょこちょこ直して、立ち上げてみると、
JSON::ParserError - 795: unexpected token at I"session_id:
とかでた。。。。
多分、影響はここ。
今までは、railsのセッションのデータは、Marshalでシリアライズされていたと思います。
で、rails 4.1で、rake rails:update
すると、config/initializers/cookies_serializer.rb
というファイルができて、中身はこんな感じになっています。
# Be sure to restart your server when you modify this file. Rails.application.config.action_dispatch.cookies_serializer = :json
これだと、jsonで必ず、シリアライズされてしまうので、:hybridを指定します
cookies_serializerで指定できる形式は、:json、:marshal、:hybridが指定できます。
:hybridを指定すると、"\x04\x08"
で始まっているかどうかで判断してるっぽいですね。
rails 4.1のhybridにしているところは多分ここ
:hybridを指定したら無事動きました。