表題のとおり、RackをバックエンドとしたCLIツール Racliを作ってみました。

モチベーションとしてはRejectKaigiBotアプリケーションインターフェースを作ったという発表があり、CLIにもそういうインターフェースがあると習得コストが低かったりRackミドルウェアで挙動を変更したり、色々と応用が効くのでは?とふと思い立ち実装した感じ。

一番オーソドックスな使い方は、以下のようなconfig.ruを書いて

racliコマンドを実行するだけ

デフォルトでパスは /、メソッドはGETでリクエストされて、200系ではRackリクエストのボディがそのまま標準出力され、400〜500系では標準エラー出力に出力されます。

パスやメソッドは引数で指定できます。

レスポンスの挙動を変えたい場合はカレントディレクトリの .raclircファイルで設定可能です。300系でリダイレクトを効かせたい場合はこんな感じで書きます。

引数として予約されているパラメータ以外をオプションに指定することもできます。例えばこのように書くと

/hello?aa=bbb&c=dddにGETリクエストします。GETリクエスト以外はリクエストBODYにapplication/www-x-form-urlencodedの形式でリクエストします。

 

正直、CLI作るんだったらThorで良いじゃん、っていうのが作ってみた感想ですが、Rackアプリを起動させない状態でcurlできるようなツールなので、Rackを起動させない状態でAPI叩きたい場合とかに役に立つのかもしれない…?

ちなみにRails用にSpringを効かせるgemも作ってあります。

tzmfreedom/spring-commands-racli: racli command for Spring