Apenas espaços em branco são reescritos: a indentação é reorganizada e linhas longas podem ser quebradas, enquanto strings, heredocs e operadores são copiados byte a byte. É um formatador de layout, não um linter: não verifica nem corrige a sintaxe.
Funciona localmente no seu navegadorCole um trecho de Ruby e a ferramenta devolve o mesmo programa com a indentação reorganizada, uma política de linhas em branco e quebra de linha opcional. Só os espaços entre tokens são reescritos: strings, heredocs, literais de porcentagem, expressões regulares, comentários e operadores são copiados byte a byte, então o resultado é analisado na mesma árvore sintática da entrada.
O formatador roda inteiramente nesta aba do navegador e nada é enviado. É um formatador de layout, não um linter: não verifica, executa nem corrige Ruby, e nunca reporta erro — um trecho com um end faltando volta diagramado, não consertado.
Só os espaços entre tokens são reescritos: a indentação inicial é reorganizada na unidade escolhida, espaços no fim da linha e linhas em branco em excesso são removidos, e linhas longas podem ser quebradas. Todo o resto é copiado byte a byte: strings com aspas simples, duplas e crases, heredocs (<<, <<-, <<~ e terminadores entre aspas como <<-'end;'), literais de porcentagem (%w, %W, %i, %I, %q, %Q, %r, %s, %x), expressões regulares, inclusive com várias linhas, símbolos e rótulos, e operadores como **, &., &:, ::, <<, -> e =>.
Uma verificação rápida de qualquer resultado: a saída tem os mesmos tokens na mesma ordem da entrada, apenas com outro espaçamento. Se o seu projeto também roda RuboCop ou rufo no editor, esta página não substitui essa etapa — ela serve para ler um trecho, não para um passo de build.
Cada nível mais profundo da entrada vira uma unidade da largura escolhida, então tabulação, 2, 3, 4 e 8 espaços produzem a mesma estrutura de blocos. Os corpos seguem def, class, module, if, unless, while, until, case, begin, for e do … end; formas modificadoras como x if y não são tratadas como blocos, e uma linha que continua uma expressão inacabada fica presa à sua instrução.
A opção de linhas em branco limita sequências de linhas vazias: remover, manter no máximo uma ou duas (o padrão mantém duas) ou manter todas. A quebra é gulosa e só corta depois de uma vírgula ou de um valor seguido de operador binário — posições em que o próprio Ruby continua a linha — então nenhum token é dividido; uma linha sem esse ponto fica longa em vez de cortada.
Não é um linter, um corretor de estilo nem um interpretador. Nada é executado, nomes não são renomeados, requires não são ordenados, aspas não são convertidas e um end faltando não é reportado. Corpos de heredoc, blocos =begin/=end e a seção de dados __END__ são copiados intactos, incluindo os espaços dentro deles.
Como o programa nunca é analisado, a página não consegue dizer que a entrada é inválida. Rode o resultado por ruby -c ou pelo verificador do seu editor quando precisar saber se é válido.