日々の記録。

プログラミングのメモや感じた事などを記録。

curl 指定したurlのデータを転送する。とrubycurlというアイディア

最近、curlという「指定したurlのファイルを標準出力する」コマンドを知ったのでメモしておく。

curlを知ったきっかけ

redminerailsの環境を構築しようと思い、mac用にパッケージ管理ツールにHomebrewを導入した。Homebrew OS Xのためのパッケージマネージャー

Homebrewをインストールの流れは、

  1. curlというコマンドでguithubからrubyスクリプトを取得する。
  2. rubyに取得したコマンドを読み込ませる。
  3. スクリプトが、必要なファイルを取得しインストールを実行する。

という流れで行われる。つまりネットにつながっていれば、インストール用のファイルを自分でダウンロードする必要は全くない。(「もちろんrubycurlがインストールされている」という前提だけど) Homebrewよりも、この中ででてくるcurlというコマンドに興味を持ったので調べてみた。

curlについて

curl(wikipedia)

  • 1997年に初版がリリースされている。
  • 指定したurlのファイル(データ)を取得(標準出力したりファイルにしたり)できる。

・・・だいぶ昔からあるらしい。 それにしてもたったこれだけの事で、スクリプトの使い方にものすごく幅が出る。シンプルだけどすごいアイディアだ。

curlの利用例

思いついたものをメモしておく。

利用例1:会社で作成したスクリプトをsvnやgitで管理し、どこからでも利用可能にする。

ruby -e "$(curl http://mycompany.co.jp/scripts/ruby/myscript.rb)"

これはHomebrewでの使い方そのまま。会社では、あちこちに散逸しているスクリプトを探して、ローカルディスクにコピーして利用している。ファイルもsvn上にあったり無かったりするので版もめちゃくちゃ。けどこうすれば最新も常にsvn上にあるし、いちいちファイルを取得する必要もなくなる。 (・・・「curl以前にスクリプトの保管方法を見直せ」という話。)

ふと思ったけど、rubycurlとか適当なバッチを用意しておき、どこかに検索対象のbaseurl(例えばhttp://mycompany.co.jp/scripts/)を登録しておけば

rubycurl myscript.rb

なんてこともできる気がする。

利用例2:テストケースに利用する

webアプリを作ったとき、データのみを出力するurlを作成しておけば、それをcurlで取得できるので、 jUnitなどでwebアプリの単体試験も行いやすいのではないだろうか?(webアプリの単体テストは未経験なので、もっと簡単で一般的な方法があるのかもしれないけど)