Rubyで書かれたHTTPのダミー/モックサーバーを手軽に作るためのツール、Cameleonをリリースしました。
仕事でよくHTTPの外部システムを使うアプリを作ることがあるのですが、Cameleonはその外部システムのモックを簡単に作るために開発しました。何度か実際の開発案件で利用しています。
使い方はRuby on Railsの感じを参考にしています。
特徴
- 基本はレスポンスのファイルをフォルダに配置するだけ
- "_switch.rb"というシンプルなRubyのDSLでレスポンス用のファイルを選択
- RESTfulなサービスのモックも簡単に作成できる(HTTPメソッドサポート)
インストール
Rubygemsで一発インストール
$ gem install cameleonインストールできるとcameleonコマンドが使えるようになります。
Getting started
まずは、cameleonのプロジェクトをnewコマンドで作ります。
$ cameleon new your_project_nameできたディレクトリに移動してserverコマンドを実行するとデフォルトでポート9292でサーバーが起動します。
$ cd your_project_name $ cameleon server別のターミナルを立ち上げて、curlでテストしてみましょう。
$ curl http://localhost:9292 Hey, I am cameleon! Edit response folder to change response whatever you want. see README.md more detail.はい、とりあえず動いていることは確認できました。
使い方
たとえば次のようなインターフェイスを作成することを考えます。
- URLのパスが/path/to/interface
- レスポンスは単純に"ok"
$ mkdir -p response/path/to/interface $ cd response/path/to/interface $ echo "ok" > default.txtcurlでテストしてみましょう。
$ curl http://localhost:9292/path/to/interface ok同様のことはgenerateコマンドを使うとより簡単です。ここでは/path/to/fooに新しいインターフェイスを作ってみます。
$ cameleon generate path/to/fooこちらもテスト。
$ curl http://localhost:9292/path/to/foo edit me: response/path/to/foo/default作成できてますね。レスポンスは必要な内容に書き換えて下さい。
_switch.rb
普通アプリ開発で利用するのであれば、モックとはいえ、レスポンスをリクエストに応じて変化させる必要があるでしょう。そのときはフォルダ内に"_switch.rb"というファイルを作成し、その中でどのレスポンスファイルをレンダリングするかを選択します。
_switch.rbはRubyで自由に記述できます。レスポンスの内容を切り替えるためには、renderメソッドでレスポンスファイルを選択します。renderメソッドが呼ばれると、そこで_switch.rbからはすぐに抜け、以降の処理は継続しません。逆に、最後までrenderメソッドが呼ばれなかった場合は、defaultで始まるファイルをレンダリングします。また、_switch.rbではparamsにリクエストパラメータが格納されているので、これを使ってレスポンスを選択するといいでしょう。
_switch.rbのサンプルです。
# you can access URL parameters by 'params' case params[:key] when "foo" # curl http://localhost:9292/gallery/params?key=foo render "foo.txt" when "bar" # You can also use POST or PUT. See 'rest' more about hadling HTTP methods. # curl -XPOST http://localhost:9292/gallery/params -d"key=bar" render "bar.txt" end # if else, render "default" (any extention acceptable) file.
Gallery
galleryコマンドで、response/galleryディレクトリにサンプルが出力されます。最初は_switch.rbで使えるAPIなどの参考になるとおもいますので利用して下さい。
$ cd YOUR_CAMELEON_HOME $ cameleon gallery
私はけっこう便利に使えているので、ぜひ利用してみて下さい。