Ruby: script e app mínimo
Um arquivo .rb com cinco linhas dentro já é um programa que roda. O mesmo comando que executa esse arquivo executa também um app web que atende no seu localhost. As duas metades cabem nos dez minutos desta página, e nenhuma delas usa framework.
O que o Ruby resolve
Código de servidor é lido muitas vezes mais do que é escrito. Boa parte das linguagens cobra cerimônia antes da intenção: uma classe embrulhando um script de dez linhas, um tipo declarado em cada variável, um terminador no fim de cada instrução. Você paga esse pedágio uma vez ao escrever e paga de novo toda vez que alguém abre o arquivo pra descobrir o que ele faz.
O Ruby corta essa camada. Tudo na linguagem é objeto, inclusive número, e quase tudo que você escreve é chamada de método com o nome do que você quer fazer. 3.times repete três vezes. "texto".upcase devolve em maiúsculas. O ganho aparece na leitura, quando a linha em Ruby cabe em quase as mesmas palavras que a frase em português.
Os conceitos que você precisa antes da primeira linha
- Tudo é objeto. A documentação oficial usa essa frase pra definir a linguagem. Número tem método, texto tem método, o valor vazio
niltem método. Por isso-3.absfunciona e devolve3, sem função solta no meio do caminho. - Bloco. Um pedaço de código que você entrega pra um método executar, escrito entre
doeendou entre chaves. É a construção mais frequente do Ruby: repetição, leitura de arquivo e tratamento de sinal do sistema operacional aparecem todos nessa forma, e os dois arquivos deste exercício usam bloco. - Interpolação com
puts. Oputsescreve na tela e devolvenil, que a documentação oficial descreve como o valor de absolutamente nada. Dentro de aspas duplas, o trecho#{}insere o valor de uma expressão no meio do texto. - Gem e o comando
gem. Gem é a biblioteca empacotada do Ruby, publicada no RubyGems. O comandogem install nomebaixa e instala. O servidor do passo 6 vem de uma gem, porque o WEBrick saiu da instalação padrão do Ruby na versão 3.0. require. Carrega uma biblioteca antes do uso, seja da instalação padrão, seja de uma gem instalada. Sem orequire "webrick"na primeira linha, o nomeWEBricknão existe pro seu programa.
A linguagem por dentro: tipos, métodos e objetos
Ruby tem tipagem dinâmica e forte, e leva o "tudo é objeto" até o fim: número, texto e até o nil respondem a métodos. Não existe função solta: o que parece função é método de algum objeto.
- Os tipos do dia a dia:
Integer,Float,String,Symbol(:nome, um identificador leve muito usado como chave),Array,Hash({ nome: "Ana" }) enil. - Método e bloco andam juntos: métodos se declaram com
def, e os de coleção recebem um bloco pra aplicar em cada item:precos.sum,precos.map { |p| p * 2 }. O laçoforexiste, mas o Ruby idiomático itera com métodos e blocos. - Orientação a objetos:
class, construtorinitialize, atributos de instância com@e o atalhoattr_accessorque gera leitor e escritor. Herança usa<.
# tipos, método e classe em doze linhas
precos = [12.5, 30, 7] # Array
def formata(valor) # método
format("R$ %.2f", valor)
end
class Carrinho # orientação a objetos
attr_accessor :itens
def initialize
@itens = [] # atributo de instância
end
end
puts formata(precos.sum) # R$ 49.50
Se a sintaxe parece prosa, é de propósito: legibilidade é o valor central declarado da linguagem, e o custo disso você viu na página, mais de um jeito de escrever a mesma coisa.
Hello world: um script que imprime e um app que responde
Tudo roda no terminal, em Linux, macOS ou Windows. A versão estável em vigor é a 4.0.6, publicada em 14/07/2026, e qualquer 3.x recente serve pro que vem abaixo.
-
Confira o Ruby que você tem:
ruby --versionA resposta tem que ser um número de versão. Se o terminal disser que o comando não existe, a documentação oficial de instalação dá o caminho por sistema:
sudo apt-get install ruby-fullno Debian e no Ubuntu,brew install rubyno macOS,winget install RubyInstallerTeam.Ruby.3.2no Windows. -
Crie uma pasta pro exercício e entre nela, pros dois arquivos ficarem juntos:
mkdir ola-ruby cd ola-ruby -
Num editor de texto, crie o arquivo
ola.rbdentro dessa pasta, com este conteúdo:nome = "mundo" puts "Olá, #{nome}" 3.times do |n| puts "linha #{n + 1}" endO
3.timesé um método do número3, e o trecho entredoeendé o bloco que ele executa a cada volta. Onentre barras verticais é o contador que o método entrega pro bloco, começando em zero. -
Rode o script:
ruby ola.rb -
Instale a gem do servidor:
gem install webrickSe o terminal reclamar de permissão de escrita, rode
gem install --user-install webrick, que instala na sua pasta de usuário em vez da pasta do sistema. A versão publicada da gem é a 1.9.2, de 26/11/2025. -
Na mesma pasta, crie o arquivo
app.rb:require "webrick" servidor = WEBrick::HTTPServer.new(Port: 8000, BindAddress: "127.0.0.1") servidor.mount_proc "/" do |req, res| res.content_type = "text/html; charset=utf-8" res.body = "<h1>Esta resposta saiu de um app Ruby</h1>" end trap("INT") { servidor.shutdown } servidor.startO
BindAddressprende o servidor à sua própria máquina, e vale escrever ele sempre: sem essa opção, o app atende por todas as interfaces de rede e fica visível pra quem estiver na mesma rede que você. Omount_procdiz o que responder no endereço/, e a documentação avisa que ele precisa vir antes dostart. Otrap("INT")é o que faz o Ctrl + C encerrar o servidor de forma limpa. -
Suba o app:
ruby app.rb -
Com o app de pé, abra
http://127.0.0.1:8000/no navegador. Pra encerrar, volte na janela do servidor e aperte Ctrl + C.
Olá, mundo seguido de linha 1, linha 2 e linha 3, e devolve o prompt logo depois. Repare que o contador do bloco começa em zero e a soma n + 1 é o que faz a contagem sair de 1 a 3. No passo 7, a janela mostra três linhas de registro do WEBrick, cada uma com data e hora entre colchetes e a marca INFO: a versão do WEBrick, a versão do Ruby, e a linha WEBrick::HTTPServer#start: pid= com o número do processo e port=8000 no fim. Depois disso o prompt fica parado, sem voltar. Prompt travado é o sinal certo aqui, porque o processo está de pé esperando pedido. No navegador, o endereço mostra "Esta resposta saiu de um app Ruby" em corpo grande, com acento correto na tela, o que prova que o charset=utf-8 da resposta chegou. Volte na janela do servidor e você vai ver duas linhas de acesso novas. A primeira sai no formato de log comum, com o endereço de origem, a data, o pedido "GET / HTTP/1.1", o código 200 e o tamanho da resposta em bytes. A segunda é curta, - -> /, e sai no formato de referência, que o WEBrick liga junto com o outro por padrão. Dois erros são frequentes nesse ponto. Um LoadError reclamando de webrick quer dizer que o passo 5 não completou. Um Errno::EADDRINUSE quer dizer que a porta 8000 já está ocupada por outro programa: troque o número por 8001 no app.rb e rode de novo.O que o Ruby não é
A confusão mais comum é tratar Ruby e Ruby on Rails como o mesmo nome. Ruby é a linguagem, de 1995. Rails, nas palavras do próprio guia oficial dele, é um framework de desenvolvimento de aplicações web escrito na linguagem Ruby, distribuído como gem e instalado por quem quiser usar. O app do passo 6 responde HTTP sem uma linha de Rails no meio, e serve de prova disso.
A distinção tem consequência prática na hora de procurar resposta. Erro de sintaxe, bloco e método são assunto da documentação do Ruby. Rota, migração de banco e ActiveRecord são assunto do Rails, e a resposta pra um raramente está no manual do outro. Vale a mesma cautela com o WEBrick: a documentação dele abre dizendo que o servidor foi feito pra teste e desenvolvimento local, sem intenção de uso em produção. Ele existe pra provar que o app responde na sua máquina, e é bom nisso.
Fontes
- Página oficial de download do Ruby, que marca a 4.0.6 como versão estável em vigor. Conferida em 15/08/2026.
- Lista oficial de releases, de onde saiu a data 14/07/2026 da 4.0.6. Conferida em 15/08/2026.
- Documentação oficial de instalação, com os comandos
apt-get install ruby-full,brew install rubyewinget install RubyInstallerTeam.Ruby.3.2. Conferida em 15/08/2026. - Guia oficial de início rápido, de onde vieram o
putse a descrição donil. Conferida em 15/08/2026. - Página oficial sobre o Ruby, com a data do lançamento público em 1995 e a frase de que tudo na linguagem é objeto. Conferida em 15/08/2026.
- Documentação oficial das opções de linha de comando, onde
--versionestá descrito. Conferida em 15/08/2026. - Anúncio oficial do Ruby 3.0.0, que lista o
webrickentre as bibliotecas que deixaram de vir junto com a linguagem. Conferida em 15/08/2026. - Repositório oficial do WEBrick, de onde saíram o
gem install webrick, o exemplo comHTTPServer,mount_procetrap, a chaveBindAddresse o aviso de que o servidor foi feito pra teste e desenvolvimento local. Conferido em 15/08/2026. - Página da gem
webrickno RubyGems, com a versão 1.9.2 publicada em 26/11/2025. Conferida em 15/08/2026. - Referência oficial de comandos do RubyGems, com o
gem installe a opção--user-install. Conferida em 15/08/2026. - Guia oficial de início do Ruby on Rails, de onde veio a definição do Rails como framework web escrito em Ruby. Conferida em 15/08/2026.
Aviso de método: os comandos e o código desta página saíram da documentação oficial citada acima, conferida em 15/08/2026. No mesmo 15/08/2026 a gente rodou o exercício inteiro em Linux, no Ruby 4.0.6 compilado a partir do tarball oficial. O passo 1 respondeu ruby 4.0.6 (2026-07-14 revision 03b6d3f889) +PRISM [x86_64-linux]. O ruby ola.rb imprimiu Olá, mundo, linha 1, linha 2 e linha 3, nessa ordem. O gem install webrick devolveu Successfully installed webrick-1.9.2. Com o ruby app.rb de pé na porta 8000, um pedido feito pelo terminal na raiz voltou HTTP/1.1 200 OK, com Content-Type: text/html; charset=utf-8, Content-Length: 42, cabeçalho Server: WEBrick/1.9.2 (Ruby/4.0.6/2026-07-14) e o corpo <h1>Esta resposta saiu de um app Ruby</h1>. Os dois erros descritos na prova foram reproduzidos de propósito, o Errno::EADDRINUSE ao subir o app duas vezes na mesma porta e o LoadError ao rodar o app sem a gem instalada.
Para continuar
Do lado do back end, a linguagem é escolha. PHP chega no mesmo lugar por outro caminho, montando a página dentro do servidor a cada pedido do navegador. Java vai pro extremo oposto do Ruby, com compilação antes de rodar e tipo declarado em tudo, e é bom ver as duas pontas pra entender o que você ganha e o que você paga em cada uma. As três estão lado a lado no mapa da stack web, junto do resto da trilha.
O curso desta trilha está em preparação. A lista paga menos.
Os tutoriais daqui continuam gratuitos. O que está a caminho é um curso pago que transforma esse mapa em formação guiada, na ordem certa e com projeto. Deixe seu e-mail: você recebe os estudos novos gratuitos e, no lançamento, o desconto de quem entrou na lista primeiro.