私の問題は、必要なファイルがオプションパーサーをインターセプトすることです。それ自身のオプションパーサーを持つプログラムでもあるファイルを要求する
私は、特定のサイトへの接続を処理する1つのファイル(connect.rb)と、データを収集する最初の2つ(populate.rbとupdate.rb)の3つのファイルでRubyプログラムを作成しています。そのサイト。
connect.rbのような、接続を設定し、テストするために実行することができます。一方
$ruby connect.rb --adduser myuser -p 1234 --test
Created user myuser
Connecting as myuser...
Connection test OK
、populate.rbは「必要connect.rb」行を持っているが、それはまたすることができそれは独自のオプションがあります。
以前はconnect.rbにオプションがありませんでしたが、それはうまくいきましたが、optparseでconnect.rbにオプションを追加したので、populate.rbとupdate.rbのオプションパーサはもう動作しません。 'ruby populate.rb -h'を実行すると、populate.rbのものではなく、connect.rbで使用できるオプションが表示されます。 connect.rbが受け入れるオプション、例えば '-t'のようなオプションを使うと、connect.rbと同じようにオプションが実行されます。 connect.rbが受け入れないオプションを使用しても、populate.rbは "無効なオプション"エラーを表示して終了する必要があります。
基本的に、別のファイルに必要なときにsoloを実行すると、connect.rbの動作が異なるようにします。私はそれを単独で実行するとき、私はそれがオプションを受け入れて何かをしたいと思う。それが別のファイルで必要とされるときには、私はメソッドを利用できるようにしたいのですが、別のオプションが必要です。
これは可能ですか?オプションの傍受を防ぐために、それがどのように呼び出されたか、あるいは他の方法であるかを示す方法はありますか?すべてのファイルでoptparseを使用しています。
あなたの答えをありがとう!私は最後の行が何をしているのか分からない。とにかく引数を渡してモジュールを実行しますか?この行を追加しないとどうなりますか? – mozsalles
この行は? 'Connect.run ARGV.dup'はいそれはコマンドラインオプションで渡すモジュールを実行します。この行を追加しないと、populate.rbが必要な場合には接続モジュールは実行されません – DiegoSalazar