Manuales para la línea de comandos

Man » Manual de ruby en línea - documentación detallada en línea para la página de manual de ruby

🌍
ruby — Lenguaje de scripting orientado a objetos interpretado

SINOPSIS

ruby     [--copyright]     [--version]     [-SUacdlnpswvy]     [-0[octal]]     [-C     directorio]
[-E  externo[:interno]]  [-F[patrón]]  [-I  directorio]  [-K[c]]  [-T[nivel]]  [-W[nivel]]
[-e  comando]  [-i[extensión]]  [-r  biblioteca]  [-x[directorio]]  [--{enable|disable}-CARACTERÍSTICA]
[--dump=destino] [--verbose] [--crash-report=plantilla] [--] [archivo_programa] [argumento ...]

DESCRIPCIÓN

Ruby es un lenguaje de scripting interpretado para la programación orientada a objetos rápida y sencilla. Tiene muchas características para procesar archivos de texto y realizar tareas de administración del sistema (como en Perl). Es simple, directo y extensible.

Si quieres un lenguaje para una programación orientada a objetos sencilla, o no te gusta la fealdad de Perl, o te gusta el concepto de LISP, pero no te gustan demasiados paréntesis, Ruby podría ser tu lenguaje de elección.

CARACTERÍSTICAS

Las características de Ruby son las siguientes:

Interpretativo Ruby es un lenguaje interpretado, por lo que no tienes que volver a compilar los programas escritos en Ruby para ejecutarlos.

Las variables no tienen tipo (tipado dinámico) Las variables en Ruby pueden contener datos de cualquier tipo. No tienes que preocuparte por el tipo de variable. En consecuencia, tiene una comprobación en tiempo de compilación más débil.

No se necesita declaración Puedes usar variables en tus programas Ruby sin ninguna declaración. Los nombres de las variables denotan su ámbito: global, de clase, de instancia o local.

Sintaxis sencilla Ruby tiene una sintaxis sencilla influenciada ligeramente por Eiffel.

Sin administración de memoria a nivel de usuario Ruby tiene administración automática de memoria. Los objetos que ya no se referencian desde ningún lugar se recopilan automáticamente mediante el recolector de basura integrado en el intérprete.

Todo es un objeto Ruby es un lenguaje puramente orientado a objetos y lo ha sido desde su creación. Incluso los datos básicos, como los enteros, se consideran objetos.

Clase, herencia y métodos Al ser un lenguaje orientado a objetos, Ruby tiene naturalmente características básicas como clases, herencia y métodos.

Métodos singleton Ruby tiene la capacidad de definir métodos para determinados objetos. Por ejemplo, puedes definir una acción de "presionar botón" para un widget específico definiendo un método singleton para el botón. O, puedes crear tu propio sistema de objetos basado en prototipos utilizando métodos singleton, si lo deseas.

Mezcla mediante módulos Ruby intencionalmente no tiene la herencia múltiple, ya que es una fuente de confusión. En cambio, Ruby tiene la capacidad de compartir implementaciones a través del árbol de herencia. Esto a menudo se denomina "mezcla".

Iteradores Ruby tiene iteradores para la abstracción de bucles.


Clausuras En Ruby, puedes objetivar el procedimiento.

Procesamiento de texto y expresiones regulares Ruby tiene un montón de funciones de procesamiento de texto como en Perl.

M17N, independiente del conjunto de caracteres

Ruby admite la programación multilingüe. Es fácil procesar textos escritos en muchos idiomas diferentes y codificados en muchos conjuntos de caracteres diferentes, sin depender de Unicode.

Números grandes Con los números grandes integrados, puedes calcular, por ejemplo, factorial(400).

Reflexión y lenguajes específicos de dominio La clase también es una instancia de la clase Class. La definición de clases y métodos es una expresión, al igual que 1+1. Por lo tanto, tus programas pueden incluso escribir y modificar programas. Así, puedes escribir tu aplicación en tu propio lenguaje de programación sobre Ruby.

Manejo de excepciones Como en Java(tm).

Acceso directo al SO Ruby puede usar la mayoría de las llamadas al sistema Unix, que a menudo se utilizan en la programación de sistemas.

Carga dinámica En la mayoría de los sistemas Unix, puedes cargar archivos de objetos en el intérprete de Ruby sobre la marcha.

Ricas bibliotecas Además de las "bibliotecas integradas" y las "bibliotecas estándar" que se incluyen con Ruby, hay una gran cantidad de bibliotecas de terceros ("gems") disponibles a través del sistema de administración de paquetes llamado "RubyGems", es decir, el comando gem(1). Visita RubyGems.org (https://rubygems.org/) para encontrar las gems que necesitas y explora GitHub (https://github.com/) para ver cómo se están desarrollando y utilizando.

OPCIONES

El intérprete de Ruby acepta las siguientes opciones de línea de comandos (interruptores). Son bastante similares a los de perl(1).

--copyright Imprime el aviso de derechos de autor y sale inmediatamente sin ejecutar ningún script.

--version Imprime la versión del intérprete de Ruby y sale inmediatamente sin ejecutar ningún script.

-0[octal] (El dígito "cero"). Especifica el separador de registros de entrada ($/) como un número octal. Si no se proporciona ningún dígito, se toma el carácter nulo como separador. Otros interruptores pueden seguir a los dígitos. -00 convierte Ruby en modo de párrafo. -0777 hace que Ruby lea todo el archivo a la vez como una sola cadena, ya que no hay ningún carácter legal con ese valor.

-C directorio
-X directorio Hace que Ruby cambie al directorio.

-E externo[:interno]
--encoding externo[:interno]

Especifica el valor predeterminado para las codificaciones externas y la codificación interna. Los valores deben separarse con dos puntos (:). Puedes omitir el valor para las codificaciones internas; en ese caso, el valor (Encoding.default_internal) será nulo.

--external-encoding=codificación
--internal-encoding=codificación

Especifica la codificación de caracteres externa o interna predeterminada.

-F patrón Especifica el separador de campo de entrada ($;).

-I directorio Se utiliza para indicar a Ruby dónde cargar los scripts de la biblioteca. La ruta del directorio se agregará a la variable load-path ($:).

-K kcode Especifica la codificación KANJI (japonés). El valor predeterminado para las codificaciones de script (__ENCODING__) y las codificaciones externas (Encoding.default_external) será el especificado. kcode puede ser uno de

e       EUC-JP

s       Windows-31J (CP932)

u       UTF-8

n       ASCII-8BIT (BINARY)

-S             Hace que Ruby use la variable de entorno PATH para buscar el script, a menos que su nombre comience con una barra. Esto se utiliza para emular #! en máquinas que no lo admiten, de la siguiente manera:

#! /usr/local/bin/ruby
# Esta línea convierte la siguiente en un comentario en Ruby \
exec /usr/local/bin/ruby -S $0 $*

En algunos sistemas, $0 no siempre contiene la ruta completa, por lo que necesita el modificador -S para indicarle a Ruby que busque el script si es necesario (para manejar espacios incrustados, etc.). Una construcción mejor que $* sería ${1+"$@"}, pero no funciona si el script está siendo interpretado por csh(1).

-T[nivel=1]    Activa las comprobaciones de contaminación en el nivel especificado (el valor predeterminado es 1).

-U             Establece el valor predeterminado para las codificaciones internas (Encoding.default_internal) en UTF-8.

-W[nivel=2]    Activa el modo detallado en el nivel especificado sin imprimir el mensaje de versión al principio. El nivel puede ser:

0      El modo detallado es "silencio". Establece $VERBOSE en nil.

1      El modo detallado es "medio". Establece $VERBOSE en false.

2(predeterminado) El modo detallado es "detallado". Establece $VERBOSE en true. -W2 es lo mismo que -w

-a             Activa el modo de división automática cuando se usa con -n o -p. En el modo de división automática, Ruby ejecuta
$F = $_.split
al comienzo de cada ciclo.

--backtrace-limit=num
Limita la longitud máxima de los rastreos a num líneas (el valor predeterminado es -1, lo que significa que no hay límite).

-c             Hace que Ruby verifique la sintaxis del script y salga sin ejecutarlo. Si no hay errores de sintaxis, Ruby imprimirá "Sintaxis OK" en la salida estándar.

-d
--debug        Activa el modo de depuración. Se establecerá $DEBUG en true.

-e comando     Especifica el script desde la línea de comandos, indicándole a Ruby que no busque el resto de los argumentos para obtener un nombre de archivo de script.

-h
--help         Imprime un resumen de las opciones.

-i extensión   Especifica el modo de edición en el lugar. La extensión, si se especifica, se agrega al nombre de archivo antiguo para crear una copia de seguridad. Por ejemplo:

% echo matz > /tmp/junk
% cat /tmp/junk
matz
% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
matz

-l             (La letra "l" en minúsculas). Habilita el procesamiento automático de fin de línea, lo que significa que primero establece $\ al valor de $/, y luego elimina cada línea leída usando chomp!.

-n             Hace que Ruby asuma el siguiente ciclo alrededor de su script, lo que hace que itere sobre los argumentos del nombre de archivo de manera similar a sed -n o awk.

while gets
...
end

-p             Actúa en su mayoría de la misma manera que el modificador -n, pero imprime el valor de la variable $_ al final de cada ciclo. Por ejemplo:

% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
MATZ

-r biblioteca     Hace que Ruby cargue la biblioteca usando require. Es útil cuando se usa -n o -p.

-s             Habilita el análisis de algunas opciones para las opciones que se encuentran después del nombre del script, pero antes de cualquier argumento de nombre de archivo (o antes de un --). Cualquier opción que se encuentre allí se elimina de ARGV y se establece la variable correspondiente en el script. Por ejemplo:

#! /usr/local/bin/ruby -s
# imprime "true" si se invoca con la opción `-xyz`.
print "true\n" if $xyz

-v             Habilita el modo detallado. Ruby imprimirá su versión al principio y establecerá la variable $VERBOSE en true. Algunos métodos imprimen mensajes adicionales si esta variable es true. Si se proporciona esta opción y no hay otras opciones presentes, Ruby se cierra después de imprimir su versión.

-w             Habilita el modo detallado sin imprimir el mensaje de versión al principio. Establece la variable $VERBOSE en true.

-x[directorio]   Indica a Ruby que el script está incrustado en un mensaje. Se descartará cualquier contenido inicial hasta la primera línea que comience con “#!” y contenga la cadena “ruby”. Cualquier opción significativa en esa línea se aplicará. El final del script debe especificarse con EOF, ^D (control-D), ^Z (control-Z) o la palabra reservada __END__. Si se especifica el nombre del directorio, Ruby cambiará al directorio antes de ejecutar el script.

-y
--yydebug      Esta opción no está garantizada que sea compatible.

Activa el modo de depuración del compilador. Ruby imprimirá una gran cantidad de mensajes de estado internos durante la compilación. Solo especifique esta opción si va a depurar el intérprete de Ruby.

--disable-FEATURE
--enable-FEATURE
Deshabilita (o habilita) la FEATURE especificada.
--disable-gems
--enable-gems      Deshabilita (o habilita) las bibliotecas de RubyGems. Por defecto, Ruby cargará la última versión de cada gem instalado. La constante Gem es true si RubyGems está habilitado, false si no.

--disable-rubyopt
--enable-rubyopt   Ignora (o considera) la variable de entorno RUBYOPT. Por defecto, Ruby considera la variable.

--disable-all
--enable-all       Deshabilita (o habilita) todas las funciones.

--dump=objetivo   Volca alguna información.

Imprime el objetivo especificado. El objetivo puede ser uno de los siguientes:

version Imprime la descripción de la versión (igual que --version).

usage Imprime un breve mensaje de uso (igual que -h).

help Muestra un mensaje de ayuda largo (igual que --help).

syntax Verifica la sintaxis (igual que -c --yydebug).

O uno de los siguientes, que están destinados a la depuración del intérprete:

yydebug Activa el modo de depuración del compilador (igual que --yydebug).

parsetree Imprime una representación textual del AST de Ruby para el programa.

parsetree_with_comment Imprime una representación textual del AST de Ruby para el programa, pero con cada nodo anotado con el código fuente de Ruby asociado.

insns Imprime una lista de instrucciones de código de bytes desensambladas.

insns_without_opt Imprime la lista de instrucciones de código de bytes desensambladas antes de que se hayan aplicado varias optimizaciones.

--verbose      Habilita el modo detallado sin imprimir el mensaje de versión al principio. Establece la variable $VERBOSE en true. Si se proporciona esta opción y no hay argumentos de script (archivo de script u opciones -e) presentes, Ruby se cierra inmediatamente.

--crash-report=template

Establece la plantilla del nombre de la ruta para guardar el informe de fallos. Consulte la variable de entorno RUBY_CRASH_REPORT para obtener más detalles.

ENTORNO

RUBYLIB Una lista separada por dos puntos de directorios que se añaden a la ruta de carga de bibliotecas de Ruby ($:).

Los directorios de esta variable de entorno se buscan antes de buscar la ruta de carga estándar.

g.:
RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"

RUBYOPT Opciones adicionales de Ruby.

g.
RUBYOPT="-w -Ke"

Tenga en cuenta que RUBYOPT solo puede contener -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug, --disable-FEATURE y --enable-FEATURE.

RUBYPATH Una lista separada por dos puntos de directorios que Ruby busca para los programas de Ruby cuando se especifica la opción -S. Esta variable precede a la variable de entorno PATH.

RUBYSHELL La ruta al comando del shell del sistema. Esta variable de entorno solo está habilitada para las plataformas mswin32, mingw32 y OS/2. Si esta variable no está definida, Ruby hace referencia a COMSPEC.

PATH Ruby hace referencia a la variable de entorno PATH al llamar a Kernel#system.

Y Ruby depende de algunas variables de entorno relacionadas con RubyGems, a menos que RubyGems esté desactivado. Consulte la ayuda de gem(1) a continuación.

% gem help

ENTORNO DE GC

El recolector de basura (GC) de Ruby realiza un seguimiento de los objetos en ranuras de tamaño fijo, pero cada objeto puede tener asignaciones de memoria auxiliares gestionadas por la familia de llamadas C de malloc (malloc(3), calloc(3) y realloc(3)). En esta documentación, "heap" se refiere a la pila de objetos Ruby de ranuras de tamaño fijo, mientras que "malloc" se refiere a las asignaciones auxiliares a las que se suele hacer referencia como la "pila de procesos". Por lo tanto, existen al menos dos formas posibles de activar el GC:

1 Alcanzar el límite de objetos.

2 Alcanzar el límite de malloc.

En Ruby 2.1, se introdujo el GC generacional y los límites se dividieron en generaciones jóvenes y antiguas, lo que proporciona dos formas adicionales de activar un GC:

3 Alcanzar el límite de objetos antiguos.

4 Alcanzar el límite de malloc antiguos.

Actualmente, existen 4 áreas posibles en las que el GC se puede ajustar mediante las siguientes 11 variables de entorno: RUBY_GC_HEAP_INIT_SLOTS Ranuras de asignación iniciales. Se aplica a todos los tamaños de ranura. Introducido en Ruby 2.1, valor predeterminado: 10000.

RUBY_GC_HEAP_%d_INIT_SLOTS Asignación inicial de ranuras en una pila específica. Las pilas disponibles se pueden encontrar en las claves de `GC.stat_heap`. Introducido en Ruby 3.3.

RUBY_GC_HEAP_FREE_SLOTS Prepare al menos esta cantidad de ranuras después del GC. Asigne este número de ranuras si no hay suficientes ranuras. Introducido en Ruby 2.1, valor predeterminado: 4096.

RUBY_GC_HEAP_GROWTH_FACTOR Aumente la tasa de asignación de ranuras de pila mediante este factor. Introducido en Ruby 2.1, valor predeterminado: 1.8, mínimo: 1.0 (sin crecimiento).

RUBY_GC_HEAP_GROWTH_MAX_SLOTS          La tasa de asignación se limita a este número de slots, evitando una asignación excesiva debido a

RUBY_GC_HEAP_GROWTH_FACTOR. Introducido en Ruby 2.1, valor predeterminado: 0 (sin límite)

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR    Se realiza una GC completa cuando el número de objetos antiguos es mayor que R \* N, donde R es este factor y N es el número de objetos antiguos después de la última GC completa. Introducido en Ruby 1.1, valor predeterminado: 2.0

RUBY_GC_MALLOC_LIMIT                   El límite inicial de asignación de la generación joven desde la familia malloc. La GC se iniciará cuando se alcance este límite. Valor predeterminado: 16MB

RUBY_GC_MALLOC_LIMIT_MAX               El límite máximo de asignación de la generación joven desde malloc antes de que la GC comience. Evita un crecimiento excesivo de malloc debido a RUBY\_GC\_MALLOC\_LIMIT\_GROWTH\_FACTOR. Introducido en Ruby 2.1, valor predeterminado: 32MB.

RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR     Aumenta el límite de llamadas malloc de la generación joven, reduciendo la frecuencia de la GC, pero aumentando el crecimiento de malloc hasta que se alcance RUBY\_GC\_MALLOC\_LIMIT\_MAX. Introducido en Ruby 1, valor predeterminado: 1.4, mínimo: 1.0 (sin crecimiento)

RUBY_GC_OLDMALLOC_LIMIT                El límite inicial de asignación de la generación antigua desde malloc, una GC completa se iniciará cuando se alcance este límite. Introducido en Ruby 2.1, valor predeterminado: 16MB

RUBY_GC_OLDMALLOC_LIMIT_MAX            El límite máximo de asignación de la generación antigua desde malloc antes de que comience una GC completa. Evita un crecimiento excesivo de malloc debido a RUBY\_GC\_OLDMALLOC\_LIMIT\_GROWTH\_FACTOR. Introducido en Ruby 2.1, valor predeterminado: 128MB

RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR  Aumenta el límite de asignación malloc de la generación antigua, reduciendo la frecuencia de la GC completa, pero aumentando el crecimiento de malloc hasta que se alcance RUBY\_GC\_OLDMALLOC\_LIMIT\_MAX. Introducido en Ruby 2.1, valor predeterminado: 1.2, mínimo: 1.0 (sin crecimiento)

ENTORNO DE TAMAÑO DE LA PILA

Las variables de entorno del tamaño de la pila dependen de la implementación y están sujetas a cambios con diferentes versiones de Ruby. La pila de la VM se utiliza para el código puro de Ruby y está gestionada por la máquina virtual. La pila de máquina la utiliza el sistema operativo y su uso depende de las extensiones C y de las opciones del compilador C. El uso de valores más bajos para estos puede permitir que las aplicaciones mantengan más fibras o hilos en ejecución; pero aumenta la probabilidad de excepciones SystemStackError y fallos de segmentación (SIGSEGV). Estas variables de entorno están disponibles desde Ruby 2.0.0. Todos los valores se especifican en bytes.

RUBY_THREAD_VM_STACK_SIZE       Tamaño de la pila de la VM utilizada en la creación de hilos. valor predeterminado: 524288 (CPU de 32 bits) o 1048575 (CPU de 64 bits)

RUBY_THREAD_MACHINE_STACK_SIZE  Tamaño de la pila de máquina utilizada en la creación de hilos. valor predeterminado: 524288 o 1048575
RUBY_FIBER_VM_STACK_SIZE        Tamaño de la pila de la VM utilizada en la creación de fibras. valor predeterminado: 65536 o 131072

RUBY_FIBER_MACHINE_STACK_SIZE   Tamaño de la pila de máquina utilizada en la creación de fibras. valor predeterminado: 262144 o 524288

ENTORNO DE INFORMES DE FALLOS

RUBY_CRASH_REPORT  La plantilla de la ruta del nombre para guardar el informe de fallos. valor predeterminado: ninguno

Nomenclatura de los archivos de informes de fallos

La plantilla puede contener especificadores % que se sustituyen por los siguientes valores cuando se crea un archivo de informe de fallos:

%% Un único carácter %.
%e Nombre base del ejecutable.
%E Ruta completa del ejecutable, con las barras diagonales (/) reemplazadas por signos de exclamación (!).
%f Nombre base del nombre del programa, $0.
%F Ruta completa del nombre del programa, $0, con las barras diagonales (/) reemplazadas por signos de exclamación (!).
%p PID del proceso que se ha volcado.
%t Hora del volcado, expresada como segundos desde la Época, 1970-01-01 00:00:00 +0000 (UTC).
%NNN Un código de carácter en octal.

Un único % al final de la plantilla se elimina del nombre de archivo del núcleo, al igual que la combinación de un % seguido de cualquier carácter que no sea uno de los anteriores. Todos los demás caracteres de la plantilla se convierten en una parte literal del nombre de archivo del núcleo. La plantilla puede incluir caracteres '/', que se interpretan como delimitadores para los nombres de los directorios.

Enviar los informes de fallos a un programa

Si el primer carácter de este archivo es un símbolo de barra vertical (|), entonces el resto de la línea se interpreta como la línea de comandos de un programa (o script) que se va a ejecutar.

La plantilla de la barra se divide en espacios para formar una lista de argumentos antes de que se expandan los parámetros de la plantilla.

VÉASE TAMBIÉN

[https://www.ruby-lang.org/] El sitio web oficial.
[https://www.ruby-toolbox.com/] Catálogo completo de bibliotecas de Ruby.

INFORME DE ERRORES

Los problemas de seguridad deben informarse por correo electrónico a _. Los problemas notificados se publicarán después de ser resueltos.

Otros errores y solicitudes de funciones se pueden informar a través del Sistema de seguimiento de errores de Ruby [https://bugs.ruby-lang.org/]. No informe problemas de seguridad a través de este sistema, ya que publica los problemas de seguridad inmediatamente.

AUTORES

Ruby está diseñado e implementado por Yukihiro Matsumoto <_>.

Consulte ⟨https://github.com/ruby/ruby/graphs/contributors⟩ para ver los colaboradores de Ruby.