Sobre esse livro
Ruby
- O que é Ruby?
- Instalando Ruby
- Ubuntu
- OSX
- RVM
- Instalando um interpretador Ruby
Básico da linguagem
- Tipagem dinâmica
- Tipagem forte
- Tipos básicos
- Fixnums
- Bignums
- Ponto flutuante
- Racionais
- Booleanos
- Nulos
- Strings
- Substrings
- Concatenando Strings
- Encoding
- Váriaveis são referências na memória
- Congelando objetos
Alguns métodos e truques com Strings
- Símbolos
- Expressões regulares
- Grupos
- Grupos nomeados
- Caracteres acentuados
- Arrays
- Duck Typing
- Ranges
- Hashes
- Blocos de código
- Conversões de tipos
- Conversões de bases
- Tratamento de exceções
- Disparando exceções
- Descobrindo a exceção anterior
- Criando nossas próprias exceções
- Comparando exceções
- Utilizando catch e throw
- Estruturas de controle
- Condicionais
- if
- unless
- case
- Loops
- while
- for
- until
- Operadores lógicos
- Procs e lambdas
- Iteradores
- Selecionando elementos
- Selecionando os elementos que não atendem uma condição
- Processando e alterando os elementos
- Detectando condição em todos os elementos
- Detectando se algum elemento atende uma condição
- Detectar e retornar o primeiro elemento que atende uma condição
- Detectando os valores máximo e mínimo
- Acumulando os elementos
- Dividir a coleção em dois Arrays obedecendo uma condição
- Percorrendo os elementos com os índices
- Ordenando uma coleção
- Combinando elementos
- Percorrendo valores para cima e para baixo
- Filtrando com o grep
- Inspecionando no encadeamento de métodos
- Métodos
- Retornando valores
- Enviando valores
- Enviando e processando blocos e Procs
- Valores são transmitidos por referência
- Interceptando exceções direto no método
Métodos destrutivos e predicados
Classes e objetos
- Classes abertas
- Navegação segura
- Aliases
- Inserindo e removendo métodos
- Metaclasses
- Variáveis de classe
- Interfaces fluentes
- Variáveis de instância de classe
- Herança
- Duplicando de modo raso e profundo
- Brincando com métodos dinâmicos e hooks
- Manipulando métodos que se parecem com operadores
- Executando blocos em instâncias de objetos
- Closures
Módulos
- Mixins
- Módulos estendendo a si mesmos!
- Namespaces
- TracePoint
Instalando pacotes novos através do RubyGems
Threads
Fibers
Continuations
Processos em paralelo
Benchmarks
Entrada e saída
- Arquivos
- Arquivos Zip
- XML
- XSLT
- JSON
- YAML
- TCP
- UDP
- SMTP
- FTP
- POP3
- HTTP
- HTTPS
- SSH
- Processos do sistema operacional
- Backticks
- System
- Exec
- IO.popen
- Open3
- XML-RPC
- Python
- PHP
- Java
JRuby
- Utilizando classes do Java de dentro do Ruby
- Usando classes do Ruby dentro do Java
Banco de dados
- Abrindo a conexão
- Consultas que não retornam dados
- Atualizando um registro
- Apagando um registro
- Consultas que retornam dados
- Comandos preparados
- Metadados
- ActiveRecord
Escrevendo extensões para Ruby, em C
Utilizando bibliotecas externas
- Escrevendo o código em C da lib
- Utilizando a lib compartilhada
Garbage collector
- Isso não é um livro de C mas …
- Isso ainda não é um livro de C, mas …
- Pequeno detalhe: nem toda String usa malloc/free
Unit testing
- Modernizando os testes
- Randomizando os testes
- Testando com specs
- Benchmarks
- Mocks
- Stubs
- Expectations
- Testes automáticos
Criando Gems
- Criando a gem
- Testando a gem
- Construindo a gem
- Publicando a gem
- Extraindo uma gem
- Assinando uma gem
- Criando um certificado
- Adaptando a gem para usar o certificado
- Construindo e publicando a gem assinada
- Utilizando a gem assinada
Rake
- Definindo uma tarefa
- Namespaces
- Tarefas dependentes
- Executando tarefas em outros programas
- Arquivos diferentes
- Tarefas com nomes de arquivo
- Tarefas com listas de arquivos
- Regras
- Estendendo
Gerando documentação
Desafios
- Desafio 1
- Desafio 2
- Desafio 3
- Desafio 4
- Desafio 5
- Desafio 6
- Desafio 7