2011-02-23 12 views
21

¿Hay alguna forma de pasar argumentos con nombre a una tarea de Rake sin usar variables de entorno?¿Cómo puedo pasar argumentos con nombre a una tarea de Rake?

Soy consciente de que las tareas de Rake pueden aceptar los argumentos en dos formatos:

variables de entorno

$ rake my_task foo=bar 

Esto crea una variable de entorno con el nombre foo y el valor bar que se puede acceder en la tarea Rake my_task por ENV['foo'].

Argumentos Rake Tarea

$ rake my_task['foo','bar'] 

Esta pasa los valores foo y bar a los dos primeros argumentos de tareas (si están definidos). Si my_task se definieron como:

task :my_task, :argument_1, :argument_2 

continuación argument_1 tendría el valor foo y argument_2 tendría el valor bar.

Respuesta

23

Puede decir cosas como esta:

rake some_task -- --arg=value 

Y luego, dentro de su tarea, ARGV habrá

[ 'some_task', '--arg=value' ] 

lo que podría utilizar OptionParser (o algún otro programa de análisis opcional) para desempaquetar ARGV como en cualquier script de CLI antiguo; el divertido aspecto -- es necesario para evitar que el rake intente analizar --arg=like como un modificador de rake.

Probablemente esté mejor con el enfoque de variable de entorno estándar, no es tan feo como todas las cosas -- y es la forma habitual de pasar argumentos a las tareas de rake.

Cuestiones relacionadas