weinreはスマホ向けJavaScriptリモートコンソールで、スマホ用のウェブアプリを作る時に凄く便利だ。だけどリモートコンソールを使いたいページに<script>タグを書かなきゃいけない。このとき、接続元から見たアプリのホスト名も意識しないといけない。しかも、必要がなくなったら消さないといけない。これは面倒。
そこでrack-weinreですよ。
rack-weinreはrack middlewareで、適切なホスト名の入った<script>タグを自動的に挿入してくれる。
例えば、下のようなconfig.ruを書いて、
require 'sinatra'
require 'rack/weinre'
class Foo < Sinatra::Base
get '/' do
<<-HTML
<html>
<head></head>
<body>foo</body>
</html>
HTML
end
end
use Rack::Weinre
run Foo
rackupしてhttp://localhost:9292/を開けばこうなる(空白は調節した)。
<html>
<head><script src="http://localhost:8080/target/target-script-min.js#anonymous"></script></head>
<body>foo</body>
</html>
<script>タグをオン/オフするには、:switchオプションでスイッチとなるファイル名を指定する。例えば下のように書いて
use Rack::Weinre, :switch => 'bordeaux'
「bordeaux」という空ファイルをconfig.ruと同じフォルダに作れば<script>タグが入るが、bordeauxを消せば<script>タグも入らなくなる。
また、8080はweinreサーバのデフォルトポートだが、これを変更して使っているようならrack-weinreにも:portオプションを渡せばいい。
use Rack::Weinre, :port => 9090
Railsで使うなら、config/environments/development.rbに下のように書く。オプションは上に書いたのと同じ。
config.middleware.use 'Rack::Weinre'