Jesús Gabriel y Galán
1/20/2009 4:24:00 PM
2009/1/20 Foreero Ivan <ivmafo@gmail.com>:
> Hola, me gustaria saber si existe alguna forma de generar mis propios
> argumentos en una linea de comando . Algo asi como como se usa el ARGV:
>
> $ ruby miscript.rb --miargumento1=3D1 --miargumento2=3D2 ....
>
> para poder usar las variables "miargumentoX" dentro de mi script ruby
>
> Gracias de antemano....
Hola. En Ruby existe un objeto llamado precisamente ARGV que es un
array que contiene los argumentos del programa:
jesus@jesus-laptop:~/temp/ruby$ ruby argv.rb --miargumento1=3D2 --miargumen=
to2=3D3
["--miargumento1=3D2", "--miargumento2=3D3"]
jesus@jesus-laptop:~/temp/ruby$ cat argv.rb
p ARGV
Para facilitar un procesamiento m=E1s complejo, echale un vistazo a
OptionParser, GetOptLong y gemas
como main o trollop, que te ayudan a procesar opciones pasadas como
argumentos. Por ejemplo,
este es un trozo de un script m=EDo usando la gema main
require 'main'
main {
description <<-DESC
Deletes or gzips jhub log files older than the specified dates,
searching the specified directories
recursively. The files should match this regexp
/^(\d\d\d\d-\d\d-\d\d).*\.log(\.gz)?$/
DESC
option("zip", "z") {
argument :required
description "Zip files older than the specified number of days"
cast :int
}
option("delete", "d") {
argument :required
defaults 7
description "Delete files older than the specified number of days.
If --zip option is specified, only delete the files that are in
between both dates"
cast :int
}
argument("directories") {
arity -2
}
def run
folders =3D params[:directories].values
have_to_zip =3D params[:zip].given?
zip =3D params[:zip].value
# Resto del programa
# ...
}
Jesus.