© Casa do Código
Todos os direitos reservados e protegidos pela Lei nº9.610, de 10/02/1998.
Nenhuma parte deste livro poderá ser reproduzida, nem transmitida, sem auto-
rização prévia por escrito da editora, sejam quais forem os meios: fotográficos,
eletrônicos mecânicos, gravação ou quaisquer outros.
Casa do Código
Livros para o programador
Rua Vergueiro, 3185 - 8º andar
04101-300 Vila Mariana São Paulo SP Brasil
Casa do Código
Quem sou eu?
Meu nome é Lucas Souza, formado em engenharia da computação na Universide
de Ribeirão Preto, trabalho profissionalmente com desenvolvimento de software há
7 anos. Durante boa parte destes anos, trabalhei dentro de empresas situadas em
Ribeirão Preto, há 4 anos estou em São Paulo. Nestes anos, trabalhei principalmente
com Java e Ruby.
Em 2005, já programava utilizando PHP, mas decidi que gostaria de aprender
outras linguagens e optei por aprender Java. Rapidamente comecei à trabalhar com
Java, no ano de 2006, partipei de um projeto onde foi possível aprender não só Java,
mas também boas práticas de desenvolvimento de software: testes, integração con-
tínua, refatoração de código, etc.
No ano de 2008, tive a oportunidade de conhecer a Caelum. Foi quando re-
solvi me mudar para São Paulo após receber o convite para trabalhar como consul-
tor. Após alguns meses, tive a oportunidade me tornar instrutor dos cursos de Java
existentes à epoca. Fui editor chefe do InfoQ Brasil por quase 2 anos, onde era res-
ponsável pela manutenção, publicação e revisão de todo o conteúdo técnico do site.
Também participei da criação dos novos cursos de Hibernate e JSF da Caelum, onde
desenvolvi o gosto pela escrita. Paralelo a isso, tive contato com vários outros desen-
volvedores da Caelum, que me incentivaram a aprender um pouco sobre Ruby, que
já era uma vontade minha na época.
Em 2011, recebi o convite para ser um dos integrantes do time responsável por de-
senvolver o novo CMS do portal R7.com, que seria escrito principalmente em Ruby.
Aceitei o desafio, e desde então me dedico diariamente no aprendizado de coisas
novas em relação a linguagem Ruby. Mas não só isso, eu gosto particularmente, de
resolver problemas relacionados a arquitetura que visam melhorar a escalabilidade
e alta disponibilidade do portal.
Procuro sempre as melhoras formas de escrever códigos legíveis e testáveis uti-
lizando Ruby. Apesar de ser um apaixonado pela linguagem e considerá-la umas
iii
Casa do Código
das melhores com as quais já trabalhei, costumo criticar seus pontos fracos, inclu-
sive no próprio livro. Acho que cada problema possui uma linguagem melhor para
resolvê-lo.
Um breve prefácio
Ruby é uma linguagem dinâmica, orientada à objetos e que possui algumas carac-
terísticas funcionais. Seu criador, Yukihiro Matsumoto queria uma linguagem que
juntasse programação funcional e imperativa, mas acima de tudo que fosse uma lin-
guagem legível. Esta é uma das grandes vantagens da linguagem, ser extremamente
legível.
Este livro é basicamente um tutorial e uma referência para a linguagem Ruby.
Ele cobre a maioria das características da linguagem e também suas principais apis:
String, Enumerable, File, etc. Além de questões mais avançadas que permiti-
rão um maior aproveitamento da linguagem, como metaprogramação, distribuição
de código e gerenciamento de dependências.
Por quê Ruby?
Além das características citadas acima, Ruby é a linguagem que eu utilizo para a
maioria dos programas que escrevo, principalmente quando vou começar aplicações
web. Trabalho há 2 anos com Ruby, e posso dizer que a linguagem é extramamente
produtiva e simples, consigo fazer coisas simples, com poucas linhas de código.
Nos últimos anos a linguagem progrediu assustadoramente. A comunidade cres-
ceu bastante, possui o Rubygems, onde se encontram um grande número de projetos
que auxiliam o dia a dia do desenvolvedor Ruby. No github, a grande maioria dos
repositórios são escritos em Ruby, o que permite que a comunidade contribua cada
vez mais para a melhoria do ambiente em volta da linguagem.
Além disso, o framework MVC Ruby on Rails, permite a criação de aplicações
web com extrema rapidez. Essa agilidade tem sido considerada por várias startups no
momento da criação de seus produtos. A vantagem é que o número de vagas dispo-
níveis no mercado crescem a cada dia, principalmente em polos de desenvolvimento
como a Califórnia.
Atualmente, aprender apenas Rails não é o suficiente. É necessário um bom co-
nhecimento da linguagem para criar códigos que facilitem a manutenção e criação de
novas funcionalidades. Aprendendo mais sobre a linguagem Ruby, faz com que você
consiga escrever códigos mais legíveis e deixe de lado vícios que podem ter vindo de
iv
Casa do Código
outras linguagens que você trabalhava.
v
Casa do Código
Sumário
Sumário
1
Uma introdução prática à linguagem Ruby
1
1.1
Quando? Onde? Por quê? . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Instalação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .