Rails4 で response.headers['content-type']
最近 ruby-openid に付属している example の Rails3 アプリをベースに実装を始め、Rails4 にバージョンアップ、微妙な実装箇所を直したり、SReg ではなく AX に対応させるよう修正・・とやっているうちに気がつくとほぼ全部書き換えていた・・!というオチになった私なのですが、その中でも既存の実装を活かし続けていたところでちょっとハマったのでエピソードとして。
response.headers['content-type'] = 'application/xrds+xml' render :text => yadis
これだと Content-Type が application/xrds+xml に設定されずに text/html だとかになってしまう。正しくはこう。
response.headers['Content-Type'] = 'application/xrds+xml' render :text => yadis
Rails3 だとどちらでもよいのですが Rails4 から動作しなくなったようです。この記事でいう Rails4 は 4.0.1 です。
元々 Rails3 だったのでバグっていた訳ではなく Rails4 に移行したので挙動が変わってしまったと。そこまでテストで守れるの?と考えると、ちょっとつらい非互換ではありますね。意図とか原因とか調べるべきなんでしょうけど...>誰か