Manuais para a linha de comandos

Man » Manual online do ruby - documentação online detalhada para a página de manual do ruby

🌍
ruby — Linguagem de script orientada a objetos interpretada

SINOPSIS

ruby     [--copyright]     [--version]     [-SUacdlnpswvy]     [-0[octal]]     [-C     directory]
[-E  external[:internal]]  [-F[pattern]]  [-I  directory]  [-K[c]]  [-T[level]]  [-W[level]]
[-e  command]  [-i[extension]]  [-r  library]  [-x[directory]]  [--{enable|disable}-FEATURE]
[--dump=target] [--verbose] [--crash-report=template] [--] [program_file] [argument ...]

DESCRIÇÃO

Ruby é uma linguagem de script interpretada para programação orientada a objetos rápida e fácil. Ela possui muitos recursos para processar arquivos de texto e para realizar tarefas de gerenciamento de sistema (como em Perl). É simples, direta e extensível.

Se você deseja uma linguagem para programação orientada a objetos fácil, ou não gosta da complexidade do Perl, ou gosta do conceito de LISP, mas não gosta de muitos parênteses, Ruby pode ser a linguagem certa para você.

CARACTERÍSTICAS

As características do Ruby são as seguintes:

Interpretada Ruby é uma linguagem interpretada, então você não precisa recompilar os programas escritos em Ruby para executá-los.

Variáveis não têm tipo (tipagem dinâmica) As variáveis em Ruby podem conter dados de qualquer tipo. Você não precisa se preocupar com a tipagem de variáveis. Consequentemente, possui uma verificação de tempo de compilação mais fraca.

Nenhuma declaração necessária Você pode usar variáveis em seus programas Ruby sem nenhuma declaração. Os nomes das variáveis indicam seu escopo - global, classe, instância ou local.

Sintaxe simples Ruby possui uma sintaxe simples, ligeiramente influenciada por Eiffel.

Nenhum gerenciamento de memória em nível de usuário Ruby possui gerenciamento automático de memória. Os objetos que não são mais referenciados em nenhum lugar são coletados automaticamente pelo coletor de lixo embutido no interpretador.

Tudo é um objeto Ruby é uma linguagem puramente orientada a objetos, e assim foi desde sua criação. Até mesmo dados básicos, como inteiros, são vistos como objetos.

Classe, herança e métodos Sendo uma linguagem orientada a objetos, Ruby naturalmente possui recursos básicos como classes, herança e métodos.

Métodos singleton Ruby possui a capacidade de definir métodos para determinados objetos. Por exemplo, você pode definir uma ação de pressionar-botão para um determinado widget, definindo um método singleton para o botão. Ou, você pode criar seu próprio sistema de objetos baseado em protótipos usando métodos singleton, se desejar.

Mix-in por módulos Ruby intencionalmente não possui herança múltipla, pois é uma fonte de confusão. Em vez disso, Ruby possui a capacidade de compartilhar implementações ao longo da árvore de herança. Isso é frequentemente chamado de 'Mix-in'.

Iteradores Ruby possui iteradores para abstração de loop.


Closures Em Ruby, você pode transformar procedimentos em objetos.

Processamento de texto e expressões regulares Ruby possui vários recursos de processamento de texto, semelhantes aos do Perl.

M17N, independente do conjunto de caracteres

Ruby oferece suporte à programação multilíngue. É fácil processar textos escritos em diferentes idiomas e codificados em diferentes conjuntos de caracteres, sem depender do Unicode.

Bignums Com bignums integrados, você pode calcular, por exemplo, fatorial(400).

Reflexão e linguagens específicas de domínio A classe também é uma instância da classe Class. A definição de classes e métodos é uma expressão, assim como 1+1. Portanto, seus programas podem até mesmo escrever e modificar programas. Assim, você pode escrever sua aplicação em sua própria linguagem de programação, baseada em Ruby.

Tratamento de exceções Como em Java(tm).

Acesso direto ao SO Ruby pode usar a maioria das chamadas de sistema Unix, frequentemente usadas em programação de sistemas.

Carregamento dinâmico Na maioria dos sistemas Unix, você pode carregar arquivos de objeto no interpretador Ruby dinamicamente.

Bibliotecas ricas Além das "bibliotecas integradas" e "bibliotecas padrão" que são fornecidas com Ruby, uma vasta quantidade de bibliotecas de terceiros ("gems") estão disponíveis por meio do sistema de gerenciamento de pacotes chamado 'RubyGems', ou seja, o comando gem(1). Visite RubyGems.org (https://rubygems.org/) para encontrar as gems que você precisa e explore o GitHub (https://github.com/) para ver como elas estão sendo desenvolvidas e usadas.

OPÇÕES

O interpretador Ruby aceita as seguintes opções de linha de comando (switches). Elas são muito semelhantes às do perl(1).

--copyright    Imprime o aviso de direitos autorais e sai imediatamente sem executar nenhum script.

--version      Imprime a versão do interpretador Ruby e sai imediatamente sem executar nenhum script.

-0[octal]      (O dígito “zero”.) Especifica o separador de registro de entrada ($/) como um número octal.

Se nenhum dígito for fornecido, o caractere nulo será usado como separador. Outros switches podem seguir os dígitos. -00 coloca o Ruby no modo de parágrafo. -0777 faz com que o Ruby leia o arquivo inteiro de uma só vez como uma única string, pois não há nenhum caractere legal com esse valor.

-C directory
-X directory   Faz com que o Ruby mude para o diretório.

-E external[:internal]
--encoding external[:internal]

Especifica o(s) valor(es) padrão para as codificações externas e a codificação interna. Os valores devem ser separados por dois pontos (:).

Você pode omitir o valor para as codificações internas; nesse caso, o valor (Encoding.default_internal) será nil.

--external-encoding=encoding
--internal-encoding=encoding

Especifica a codificação de caractere externa ou interna padrão

-F pattern     Especifica o separador de campo de entrada ($;).

-I directory   Usado para informar ao Ruby onde carregar os scripts da biblioteca. O caminho do diretório será adicionado à variável load-path ($:).

-K kcode       Especifica a codificação KANJI (japonês). O valor padrão para as codificações de script (__ENCODING__) e as codificações externas (Encoding.default_external) será o especificado. kcode pode ser um dos

e       EUC-JP

s       Windows-31J (CP932)

u       UTF-8

n       ASCII-8BIT (BINARY)

-S             Faz com que o Ruby use a variável de ambiente PATH para pesquisar o script, a menos que o nome
comece com uma barra. Isso é usado para emular #! em máquinas que não o suportam, da seguinte forma:

#! /usr/local/bin/ruby
# Esta linha torna a próxima linha um comentário em Ruby \
exec /usr/local/bin/ruby -S $0 $*

Em alguns sistemas, $0 nem sempre contém o caminho completo, então você precisa da opção -S para dizer ao Ruby para pesquisar o script, se necessário (para lidar com espaços embutidos e outros). Uma construção melhor do que $* seria ${1+"$@"}, mas não funciona se o script estiver sendo interpretado por csh(1).

-T[level=1]    Ativa as verificações de contaminação no nível especificado (padrão 1).

-U             Define o valor padrão para codificações internas (Encoding.default_internal) como
UTF-8.

-W[level=2]    Ativa o modo verbose no nível especificado, sem imprimir a mensagem de versão
no início. O nível pode ser:

0      O modo verbose é "silencioso". Ele define $VERBOSE como nil.

1      O modo verbose é "médio". Ele define $VERBOSE como false.

2(padrão) O modo verbose é "verbose". Ele define $VERBOSE como true. -W2 é
o mesmo que -w

-a             Ativa o modo de divisão automática quando usado com -n ou -p. No modo de divisão automática, o Ruby executa
$F = $_.split
no início de cada loop.

--backtrace-limit=num

Limita o comprimento máximo dos rastreamentos de pilha para num linhas (padrão -1, o que significa sem limite).

-c             Faz com que o Ruby verifique a sintaxe do script e saia sem executá-lo. Se não houver
erros de sintaxe, o Ruby imprimirá "Sintaxe OK" na saída padrão.

-d
--debug        Ativa o modo de depuração. $DEBUG será definido como true.

-e command     Especifica o script a partir da linha de comando, indicando ao Ruby para não pesquisar o restante
dos argumentos em busca de um nome de arquivo de script.

-h
--help         Imprime um resumo das opções.

-i extension   Especifica o modo de edição no local. A extensão, se especificada, é adicionada ao nome
do arquivo antigo para criar uma cópia de backup. Por exemplo:

% 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             (A letra "l" minúscula). Habilita o processamento automático de fim de linha, o que
significa definir primeiro $\ para o valor de $/, e, em segundo lugar, remover o fim de linha de cada linha lida usando chomp!.

-n             Faz com que o Ruby assuma o seguinte loop em torno do seu script, o que faz com que ele itere sobre os nomes dos arquivos de argumentos de forma semelhante ao sed -n ou awk.

while gets
...
end

-p             Atua quase da mesma forma que a opção -n, mas imprime o valor da variável $_ no final
de cada loop. Por exemplo:

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

-r library     Faz com que o Ruby carregue a biblioteca usando require. É útil quando usado com -n ou -p.

-s             Ativa a análise de alguns parâmetros para parâmetros após o nome do script, mas antes de quaisquer argumentos de nome de arquivo (ou antes de um "--"). Quaisquer parâmetros encontrados ali são removidos de ARGV e o valor correspondente é definido na variável do script. Por exemplo:

#! /usr/local/bin/ruby -s
# imprime "true" se invocado com o parâmetro `-xyz'.
print "true\n" if $xyz

-v             Ativa o modo verboso. O Ruby imprimirá sua versão no início e definirá a variável $VERBOSE como true. Alguns métodos imprimem mensagens extras se esta variável for true. Se este parâmetro for fornecido e nenhum outro parâmetro estiver presente, o Ruby será encerrado após imprimir sua versão.

-w             Ativa o modo verboso sem imprimir a mensagem de versão no início. Define a variável $VERBOSE como true.

-x[diretório]  Informa ao Ruby que o script está incorporado em uma mensagem. O lixo inicial será descartado até a primeira linha que começa com “#!” e contém a string “ruby”. Quaisquer parâmetros significativos nessa linha serão aplicados. O final do script deve ser especificado com EOF, ^D (control-D), ^Z (control-Z) ou a palavra reservada __END__. Se o nome do diretório for especificado, o Ruby mudará para esse diretório antes de executar o script.

-y
--yydebug      Esta opção não tem compatibilidade garantida.

Ativa o modo de depuração do compilador. O Ruby imprimirá uma série de mensagens de estado interno durante a compilação. Especifique este parâmetro apenas se você for depurar o interpretador Ruby.

--disable-FEATURE
--enable-FEATURE
Desativa (ou ativa) o FEATURE especificado.
--disable-gems
--enable-gems      Desativa (ou ativa) as bibliotecas RubyGems. Por padrão, o Ruby carrega a versão mais recente de cada gem instalada. A constante Gem é true se o RubyGems estiver habilitado, false caso contrário.

--disable-rubyopt
--enable-rubyopt   Ignora (ou considera) a variável de ambiente RUBYOPT. Por padrão, o Ruby considera a variável.

--disable-all
--enable-all       Desativa (ou ativa) todos os recursos.

--dump=target  Faz o despejo de algumas informações.

Imprime o target especificado. target pode ser um dos seguintes:

version Imprime a descrição da versão (o mesmo que --version).

usage   Imprime uma breve mensagem de uso (o mesmo que -h).

help    Mostra a mensagem de ajuda completa (o mesmo que --help).

syntax  Verifica a sintaxe (o mesmo que -c --yydebug).

Ou um dos seguintes, que são destinados à depuração do interpretador:

yydebug                 Ativa o modo de depuração do compilador (o mesmo que --yydebug).

parsetree               Imprime uma representação textual da AST do Ruby para o programa.

parsetree_with_comment  Imprime uma representação textual da AST do Ruby para o programa, mas com cada nó anotado com o código-fonte Ruby associado.

insns                   Imprime uma lista de instruções de bytecode desmontadas.

insns_without_opt       Imprime a lista de instruções de bytecode desmontadas antes que várias otimizações tenham sido aplicadas.

--verbose      Ativa o modo verboso sem imprimir a mensagem de versão no início. Define a variável $VERBOSE como true. Se este parâmetro for fornecido e nenhum argumento de script (arquivo de script ou opções -e) estiver presente, o Ruby será encerrado imediatamente.

--crash-report=template

Define o modelo do nome do caminho para salvar o relatório de falha. Consulte a variável de ambiente RUBY_CRASH_REPORT para obter detalhes.

AMBIENTE

RUBYLIB    Uma lista separada por dois pontos de diretórios que são adicionados ao caminho de carregamento da biblioteca Ruby ($:).

Os diretórios desta variável de ambiente são pesquisados antes que o caminho de carregamento padrão seja pesquisado.

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

RUBYOPT    Opções adicionais do Ruby.

g.
RUBYOPT="-w -Ke"

Observe que RUBYOPT pode conter apenas -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug, --disable-FEATURE e --enable-FEATURE.

RUBYPATH   Uma lista separada por dois pontos de diretórios que o Ruby pesquisa para programas Ruby quando a flag -S é especificada. Esta variável precede a variável de ambiente PATH.

RUBYSHELL  O caminho para o comando do shell do sistema. Esta variável de ambiente é habilitada apenas para as plataformas mswin32, mingw32 e OS/2. Se esta variável não estiver definida, o Ruby se refere a COMSPEC.

PATH       O Ruby se refere à variável de ambiente PATH ao chamar Kernel#system.

E o Ruby depende de algumas variáveis de ambiente relacionadas ao RubyGems, a menos que o RubyGems esteja desabilitado. Consulte a ajuda de gem(1) abaixo.

% gem help

AMBIENTE GC

O coletor de lixo (GC) do Ruby rastreia objetos em slots de tamanho fixo, mas cada objeto pode ter alocações de memória auxiliares tratadas pela família de chamadas C da biblioteca padrão (malloc(3), calloc(3) e realloc(3)). Nesta documentação, o "heap" se refere ao heap de objetos Ruby de slots de tamanho fixo, enquanto "malloc" se refere a alocações auxiliares, comumente referidas como o "heap de processo". Assim, existem pelo menos duas maneiras possíveis de acionar o GC:

1      Atingir o limite de objetos.

2      Atingir o limite de malloc.

No Ruby 2.1, o GC geracional foi introduzido e os limites são divididos em gerações jovem e antiga, fornecendo duas maneiras adicionais de acionar um GC:

3      Atingir o limite de objetos antigos.

4      Atingir o limite de malloc antigos.

Atualmente, existem 4 áreas possíveis onde o GC pode ser ajustado pelas seguintes 11 variáveis de ambiente: RUBY_GC_HEAP_INIT_SLOTS Slots de alocação iniciais. Aplica-se a todos os tamanhos de slot. Introduzido no Ruby 2.1, padrão: 10000.

RUBY_GC_HEAP_%d_INIT_SLOTS             Alocação inicial de slots em um heap específico. Os heaps disponíveis podem ser encontrados nas chaves de `GC.stat_heap`. Introduzido no Ruby 3.3.

RUBY_GC_HEAP_FREE_SLOTS                Prepare pelo menos esta quantidade de slots após o GC. Aloque este número de slots se não houver slots suficientes. Introduzido no Ruby 2.1, padrão: 4096

RUBY_GC_HEAP_GROWTH_FACTOR             Aumente a taxa de alocação de slots de heap por este fator. Introduzido no Ruby 2.1, padrão: 1.8, mínimo: 1.0 (sem crescimento)

RUBY_GC_HEAP_GROWTH_MAX_SLOTS          A taxa de alocação é limitada a este número de slots, evitando alocações excessivas devido ao

RUBY_GC_HEAP_GROWTH_FACTOR. Introduzido no Ruby 2.1, padrão: 0 (sem limite)

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR    Realiza uma coleta de lixo completa quando o número de objetos antigos é maior que R \* N, onde R é este fator e N é o número de
    objetos antigos após a última coleta de lixo completa. Introduzido no Ruby
    1.1, padrão: 2.0

RUBY_GC_MALLOC_LIMIT                   O limite inicial de alocação da geração jovem a partir da família malloc. A coleta de lixo será iniciada quando este limite for atingido.
    Padrão: 16MB

RUBY_GC_MALLOC_LIMIT_MAX               O limite máximo de alocação da geração jovem a partir de malloc antes que a coleta de lixo seja iniciada. Evita o crescimento excessivo de malloc
    devido ao RUBY\_GC\_MALLOC\_LIMIT\_GROWTH\_FACTOR. Introduzido no
    Ruby 2.1, padrão: 32MB.

RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR     Aumenta o limite de chamadas de alocação de malloc da geração jovem, reduzindo a frequência da coleta de lixo, mas aumentando o crescimento de malloc até
    que o RUBY\_GC\_MALLOC\_LIMIT\_MAX seja atingido. Introduzido no Ruby
    1, padrão: 1.4, mínimo: 1.0 (sem crescimento)

RUBY_GC_OLDMALLOC_LIMIT                O limite inicial de alocação da geração antiga a partir de malloc, uma coleta de lixo completa será iniciada quando este limite for atingido. Introduzido no Ruby 2.1, padrão: 16MB

RUBY_GC_OLDMALLOC_LIMIT_MAX            O limite máximo de alocação da geração antiga a partir de malloc antes que uma coleta de lixo completa seja iniciada. Evita o crescimento excessivo de malloc
    devido ao RUBY\_GC\_OLDMALLOC\_LIMIT\_GROWTH\_FACTOR. Introduzido no
    Ruby 2.1, padrão: 128MB

RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR  Aumenta o limite de alocação de malloc da geração antiga,
    reduzindo a frequência da coleta de lixo completa, mas aumentando o crescimento de malloc
    até que o RUBY\_GC\_OLDMALLOC\_LIMIT\_MAX seja atingido. Introduzido no
    Ruby 2.1, padrão: 1.2, mínimo: 1.0 (sem crescimento)

TAMANHO DA PILHA DO AMBIENTE

As variáveis de ambiente de tamanho da pilha são dependentes da implementação e estão sujeitas a alterações com diferentes versões do Ruby. A pilha da VM é usada para código Ruby puro e é gerenciada pela máquina virtual. A pilha de máquina é usada pelo sistema operacional e seu uso depende de extensões C, bem como das opções do compilador C. Usar valores mais baixos para estes pode permitir que os aplicativos mantenham mais Fibers ou Threads em execução; mas aumenta a chance de ocorrerem exceções de SystemStackError e falhas de segmentação (SIGSEGV). Estas variáveis de ambiente estão disponíveis desde o Ruby 2.0.0. Todos os valores são especificados em bytes.

RUBY_THREAD_VM_STACK_SIZE       Tamanho da pilha da VM usado na criação da thread. padrão: 524288 (CPU de 32 bits) ou 1048575 (CPU de 64 bits)

RUBY_THREAD_MACHINE_STACK_SIZE  Tamanho da pilha da máquina usado na criação da thread. padrão: 524288 ou
1048575
RUBY_FIBER_VM_STACK_SIZE        Tamanho da pilha da VM usado na criação da fiber. padrão: 65536 ou 131072

RUBY_FIBER_MACHINE_STACK_SIZE   Tamanho da pilha da máquina usado na criação da fiber. padrão: 262144 ou
524288

AMBIENTE DE RELATÓRIO DE FALHA

RUBY_CRASH_REPORT  O modelo do nome do caminho para salvar o relatório de falha. padrão: nenhum

Nomeando arquivos de relatórios de falhas

O modelo pode conter especificadores % que são substituídos pelos seguintes valores quando um arquivo de relatório de falhas é criado:

%%    Um único caractere %.
%e    Nome base do executável.
%E    Caminho do executável, com barras (/) substituídas por pontos de exclamação (!).
%f    Nome base do nome do programa, $0.
%F    Caminho do nome do programa, $0, com barras (/) substituídas por pontos de exclamação (!).
%p    PID do processo que gerou o dump.
%t    Hora do dump, expressa como segundos desde a Época, 1970-01-01 00:00:00 +0000 (UTC).
%NNN  Um código de caractere em octal.

Um único % no final do modelo é removido do nome do arquivo de núcleo, assim como a combinação de um % seguido por qualquer caractere diferente dos listados acima. Todos os outros caracteres no modelo se tornam parte literal do nome do arquivo de núcleo. O modelo pode incluir caracteres '/', que são interpretados como delimitadores para nomes de diretórios.

Redirecionando relatórios de falhas para um programa

Se o primeiro caractere deste arquivo for um símbolo de pipe (|), o restante da linha será interpretado como a linha de comando para um programa (ou script) que será executado.

O modelo do pipe é dividido em espaços em uma lista de argumentos antes que os parâmetros do modelo sejam expandidos.

VEJA TAMBÉM

https://www.ruby-lang.org/     O site oficial.
https://www.ruby-toolbox.com/  Catálogo abrangente de bibliotecas Ruby.

RELATANDO BUGS

Vulnerabilidades de segurança devem ser relatadas por e-mail para _. Os problemas relatados serão publicados após a correção.

Outros bugs e solicitações de recursos podem ser relatados por meio do Sistema de Rastreamento de Problemas Ruby (https://bugs.ruby-lang.org/). Não relate vulnerabilidades de segurança por meio deste sistema, pois ele publica as vulnerabilidades imediatamente.

AUTORES

Ruby é projetado e implementado por Yukihiro Matsumoto <_>.

Veja ⟨https://github.com/ruby/ruby/graphs/contributors⟩ para obter uma lista de colaboradores do Ruby.