編集:お願い、お願い、お願い応答する前に、この記事の一番下にリストされている2つの要件をお読みください。人々は新しい宝石やライブラリなどを投稿し続けますが、それらは明らかに要件を満たしていません。
コマンドラインオプションをシンプルなスクリプトに非常に安価にハックしたい場合があります。getoptsや解析などを行わずにそれを行う楽しい方法は次のとおりです。
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
" myprog -i foo bar -q
"のようにオプション以外のコマンドラインパラメーターを受け入れるため、これは通常のUnixオプション構文ではありませんが、それでも問題ありません。(Subversion開発者などの一部の人はこれを好みます。時には私もそうします。)
存在するオプションまたは存在しないオプションは、上記よりも簡単に実装することはできません。(1つの割り当て、1つの関数呼び出し、1つの副作用。) " -f
filename」?
編集:
ライブラリが「1つの[800行]ファイルに収まる」とTrollopの作者が言うまで私には明確にならなかったので、私が以前に触れなかった1つの点は、私がクリーンなだけでなく探しているということです。構文ですが、次の特性を持つ手法の場合:
コード全体をスクリプトファイルに含めることができ(実際のスクリプト自体を圧倒することなく、これは数十行になる場合があります)、
bin
標準のRuby 1.8を搭載した任意のシステムのディレクトリに単一のファイルをドロップできます。。[5-7]インストールして使用します。requireステートメントのないRubyスクリプトを記述できず、いくつかのオプションを解析するコードが数十行以下の場合、この要件は満たされません。コードは小さくてシンプルなので、他の場所からカットアンドペーストするのではなく、トリックを実行するコードを直接入力するのに十分なほど覚えています。ファイアウォールで保護されたサーバーのコンソール上でインターネットにアクセスできない状況で、クライアントが使用する簡単なスクリプトを一緒に投げたいと考えているとします。私はあなたのことは知りませんが、(上記の要件を満たしていないことを除いて)45行の簡略化されたmicro-optparseを記憶することは、私がやりたいことではありません。
getoptlong
とoptparse
あなたのスクリプトを展開する際にそれらをコピーする必要はありませんので、標準のRubyライブラリにある-ルビーは、その後、そのマシン上で動作するかどうrequire 'optparse'
か、require 'getoptlong'
あまりにも動作しますが。