¿Puede OptionParser omitir opciones desconocidas, que se procesarán más adelante en un programa Ruby?

¿Hay alguna manera de comenzar?OptionParser varias veces en un programa Ruby, cada uno con diferentes conjuntos de opciones?

Por ejemplo:

$ myscript.rb --subsys1opt a --subsys2opt b

Aquí, myscript.rb usaría subsys1 y subsys2, delegando sus opciones de manejo de lógica para ellos, posiblemente en una secuencia donde 'a' se procesa primero, seguido de 'b' en un objeto OptionParser separado; cada vez que elige opciones solo relevantes para ese contexto. Una fase final podría verificar que no quede nada desconocido después de que cada parte procese la suya.

Los casos de uso son:

En un programa front-end poco acoplado, donde varios componentes tienen diferentes argumentos, no quiero que 'main' sepa de todo, solo para delegar conjuntos de argumentos / opciones a cada parte.

Incrustar un sistema más grande como RSpec en mi aplicación, y simplemente pasaría una línea de comando a través de sus opciones sin que mi contenedor las conociera.

También estaría bien con alguna opción de delimitador, como-- o--vmargs en algunas aplicaciones Java

Hay muchos ejemplos del mundo real para cosas similares en el mundo Unix (startx / X, git fontanería y porcelana), donde una capa maneja algunas opciones pero propaga el resto a la capa inferior.

Fuera de la caja, esto no parece funcionar. CadaOptionParse.parse! La llamada hará un procesamiento exhaustivo, fallando en todo lo que no sabe. Supongo que me encantaría omitir opciones desconocidas.

Cualquier sugerencia, quizás enfoques alternativos son bienvenidos.

Respuestas a la pregunta(10)

Su respuesta a la pregunta