読者です 読者をやめる 読者になる 読者になる

CubicLouve

Spring_MTの技術ブログです。https://github.com/SpringMT (http://spring-mt.tumblr.com/ からの移転)

rails 4.1.0にあげたらJSON::ParserErrorになった問題

ruby rails

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を指定したら無事動きました。