attr_accessor cria métodos de leitura e escrita. Use attr_reader para atributos somente de leitura e attr_writer para atributos somente de escrita.
Herança
ruby snippet
1class Animal
2 def falar
3 "Um som genérico de animal"
4 end
5end
6
7class Cachorro < Animal
8 def falar
9 "Au!"
10 end
11end
12
13class Gato < Animal
14 def falar
15 "Miau!"
16 end
17end
18
19fido = Cachorro.new
20mingau = Gato.new
21puts fido.falar # "Au!"
22puts mingau.falar # "Miau!"
Módulos e mixins
ruby snippet
1module Voador
2 def voar
3 "Estou voando!"
4 end
5end
6
7module Nadador
8 def nadar
9 "Estou nadando!"
10 end
11end
12
13class Passaro
14 include Voador
15end
16
17class Pato
18 include Voador
19 include Nadador
20end
21
22pardal = Passaro.new
23pato = Pato.new
24puts pardal.voar # "Estou voando!"
25puts pato.voar # "Estou voando!"
26puts pato.nadar # "Estou nadando!"
Módulos são úteis para compartilhar funcionalidades entre classes que não possuem relação direta. Eles ajudam a evitar os problemas da herança múltipla.
Operações com arquivos
ruby snippet
1# Lê um arquivo linha por linha
2File.open("dados.txt", "r") do |arquivo|
3 arquivo.each_line do |linha|
4 puts linha
5 end
6end
7
8# Escreve em um arquivo
9File.open("saida.txt", "w") do |arquivo|
10 arquivo.puts "Olá, Ruby!"
11 arquivo.puts "Esta é uma nova linha."
12end
13
14# Lê todo o conteúdo do arquivo
15conteudo = File.read("dados.txt")
16
17# Verifica se o arquivo existe
18File.exist?("dados.txt")
Sempre feche os arquivos depois de usá-los. Ao usar blocos com File.open, o Ruby fecha o arquivo automaticamente quando o bloco termina.
Tratamento de exceções
ruby snippet
1begin
2 # Código que pode gerar uma exceção
3 resultado = 10 / 0
4rescue ZeroDivisionError => erro
5 puts "Erro: #{erro.message}"
6rescue => erro
7 puts "Ocorreu outro erro: #{erro.message}"
8else
9 puts "Nenhum erro ocorreu"
10ensure
11 puts "Este código sempre é executado"
12end
13
14# Exceções personalizadas
15class ErroPersonalizado < StandardError
16 def initialize(mensagem = "Ocorreu um erro personalizado")
17 super
18 end
19end
20
21begin
22 raise ErroPersonalizado.new("Algo deu errado")
23rescue ErroPersonalizado => erro
24 puts erro.message
25end
Ferramentas úteis do Ruby
RubyGems
bash snippet
1# Instala uma gem
2gem install nokogiri
3
4# Lista as gems instaladas
5gem list
6
7# Atualiza uma gem
8gem update rails
9
10# Remove uma gem
11gem uninstall nokogiri
Bundler
bash snippet
1# Instala o Bundler
2gem install bundler
3
4# Instala as gems definidas no Gemfile
5bundle install
6
7# Atualiza as gems
8bundle update
9
10# Executa um comando no contexto do bundle
11bundle exec rspec
O Bundler ajuda a gerenciar as dependências de gems das aplicações Ruby.
Expressões regulares
ruby snippet
1# Correspondência básica de padrão
2"olá" =~ /lá/ # Retorna 1, o índice da correspondência
3
4# Padrão com modificador
5"Olá, mundo" =~ /olá/i # Ignora diferenças entre maiúsculas e minúsculas