odeの開発メモ日記

プログラマーやってます。今までの道のり ポケコンbasic→C(DirectX5 ネットやろうぜ)→Perl(ちょろっと)→Java→C#→Ruby→Android(Java)

thinでswfを扱う場合

前書き

publicフォルダにswfをおいた場合に
thinだとcontent-typeがtextになってしまうようです。
これだと携帯でのflash表示が失敗するので(mimeが違うとau,softbankは見れないっぽい。docomoは無視して表示するみたいだが)
そのためflashmimeをきちんと返すようにする必要があります。
(ちなみにmongrelはswf対応してました)

やり方

thinはRackというWebサーバーを作るフレームワークを使用していて
そこに静的ファイルの扱いをまかせてるっぽいです。
RackのクラスにMime定義のHashがあったので、
そこにswfのmime定義を追加することで解決できました。
(Rackは勉強してないんで、もっといいやり方があるかもしれません。。)


environment.rb

#mongrelだとエラーでたのでif文きりわけ
if defined? Rack::File::MIME_TYPES
  Rack::File::MIME_TYPES["swf"] = "application/x-shockwave-flash"
  Rack::Directory::MIME_TYPES["swf"] = "application/x-shockwave-flash"
end