1台のマシンに異なるバージョンのRailsアプリを走らせる
まず、gemで必要なものをインストールします。
Aアプリ(Rails-1.1.6+gettext-1.8.0)
Bアプリ(Rails-1.2.2+gettext-1.9.0)
こういう場合、gemでrailsやgettextを入れても
新しいのを呼び出そうとしてうまく動きません。
こういう場合はそれぞれ
rake rails:freeze:gems cp -a /usr/lib/ruby/gems/1.8/gems/gettext-1.X.0 vender/plugins
を実行すると、Railsはvender/railsの中に、
その他の必要なgemはpluginsに入ります。
そうするとgemに依存しないアプリ環境ができあがりです。
send_fileとかでファイルをダウンロードさせるとcontent typeが変だ
applicationコントローラの中で、set_charsetフィルタを
定義している人は上書きされています。
名前は違っても、同じようなことをしている人は多いかと思います。
def set_charset headers['content-type']="text/html;charset-utf-8" unless request.xhr? end
こんな感じのフィルタを定義しているかと思います。
これはAJAXではない場合はcontent-typeをtext/htmlにセットするという
内容です。そこで規定(社内のみ)をつくって、downloadから始まるアクションは
content typeを書き換えないようにしてみました。
def set_charset unless params[:action]=~/^download/ || request.xhr? headers['content-type']="text/html;charset-utf-8" end end
こうすると、download_pdfとかいうアクションは
content typeが上書きされなくなっていい感じです。