| Version 7 (modified by cho45, 5 years ago) |
|---|
CocProxy
めんどくさいことしない置換プロキシー
使い方
- http://svn.coderepos.org/share/lang/ruby/cocproxy/proxy.rb をダウンロード
- `files' というディレクトリをつくる
- 置換したいファイルをてきとうにつっこむ
- ruby proxy.rb
- ポートとか表示されるのでブラウザの設定を変える
デフォルトだと、
- #{File.basename(req.path_info)}",
- #{req.host}#{req.path_info}",
- #{req.host}/#{File.basename(req.path_info)}",
- .#{req.path_info}",
がスキャンされ、ヒットしたら置換されます。
例えば、http://example.com/test/foo/bar.css にアクセスすると
- files/bar.css
- files/example.com/test/foo/bar.css
- files/example.com/bar.css
- files/test/foo/bar.css
が順にスキャンされ、最初に発見されたファイルが置換されブラウザに返されます。
部分置換
正規表現により部分的に置換することもできます。
http://example.com/hoge.html というファイルの style 要素を置換したければ、 ルールにヒットするファイルに
proxy-replace: <style type="text/css">¥s*<!--([^<]+)-->¥s*</style>
などと書き、さらに置換したい内容を書けば、 指定した正規表現のキャプチャのうち、第一番目のキャプチャが該当ファイルの内容で 置換されるようになります。
単純にファイル内容を追記したい場合は
proxy-replace: (\z)
と書けば良いです。(\z は文字列末尾にマッチする)
置換後のファイルでは proxy-replace 以降、行末までは削除されるので、 proxy-replace のあとを HTML エスケープなどする必要はありません。
キャッシュ
開発用のプロキシでリロードをしまくる性質上、 置換対象のファイルでない限り全てのリソースを無条件にキャッシュします。
もしキャッシュをクリアしたければ、?clearcache=1 をつけて、 適当な URL にアクセスすればクリアされます。
さらに
proxy.rb はカレントディレクトリの proxy-config.yaml を設定として読みこむことで、 デフォルトの設定を上書きすることができます。
また、double_screen.rb というファイルがあればロードします。 double_screen.rb は標準出力と標準エラー出力を左右にわけて表示するもので、 使用することで、ちゃんと置換されているかどうかを確認しやすくなります。
Download / Repos.
1ファイル完結版
全部
svn co http://svn.coderepos.org/share/lang/ruby/cocproxy/
Principles
- 基本的に1つのファイルで完結すること
- ruby1.9 メイン
- 標準ライブラリで動くこと
Mongrel Version
WEBrick は、標準ライブラリであり、内部に HTTP Proxy の実装も持っているため手軽なのですが、Pure Ruby なので少々動作が遅いのが欠点です。開発中は頻繁にリロードするという用途上、遅いとストレスがたまるので Mongrel での実装も書きました。
- ruby1.8 系
- rubygems/mongrel 依存
で動作確認しています。体感的には普通にブラウジングするのとそんなに違わなくなります。
Ref.
License
Public Domain
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)
