Ruby Lessons #1 – Introdução – Evandro da Silva Amparo
16/04/2013 16/04/2013 Publicado em Ruby
Algumas coisas importantes sobre o Ruby:
#1.1 Origem
Surgiu em 1995, criada pelo japonês Yukihiro Matsumoto. O intuito era criar uma linguagem natural, que facilitasse a leitura e manutenção do código. Para isto, juntou boas características de outras linguagens de programação e criou uma nova que acabou se tornando um grande sucesso. Além disso, é totalmente gratuita para usar, copiar, modificar e distribuir.
#1.2 É uma linguagem interpretada
Necessita da instalação de um interpretador que pode ser encontrado no site oficial. Pulando os detalhes da instalação em cada plataforma, para executar um código Ruby, pode-se utilizar:
O shell interativo (IRB) que acompanha a instalação padrão
irb(main):001:0> 'Hello World'
Ou salvar os scripts em arquivos .rb e executá-los através do interpretador "ruby" ou "ruby.exe"
Uma outra opção para executar scripts interativamente, com muito mais recursos: Pry
#1.3 É uma linguagem orientada a objetos
Como não poderia deixar de ser. Aliás, tudo em Ruby é um objeto. Isto significa que, além de podermos utilizar todos os recursos da orientação a objetos, podemos chamar métodos ou acessar atributos sobre qualquer coisa, até mesmo constantes literais, como 1 ou 'foo':
irb(main):001:0> 1.equal? 2
irb(main):002:0> 'foo'.upcase
Mas o Ruby é flexível o suficiente para permitir diferentes estilos de codificação, se assemelhando à programação funcional ou procedural quando necessário. Para scripts pequenos, por exemplo, é possível escrever algo semelhante a isto:
print 'Digite seu nome: '
Onde print, gets e puts são métodos da classe Kernel, embutida no interpretador. Isto fica completamente transparente para o desenvolvedor.
#1.4 É uma linguagem simples e expressiva
Como dito anteriormente, o objetivo era criar uma linguagem natural, fácil de entender. Por consequência, a linguagem é extremamente simples de ler e escrever mas também extremamente poderosa.
#1.5 É uma linguagem dinâmica, fortemente e implicitamente tipada
Não é necessário declarar tipos. Eles são inferidos pelo interpretador. Nem é necessário declarar uma variável para utilizá-la. A simples inicialização é suficiente para que o interpretador saiba qual é o escopo e o tipo do objeto.
irb(main):003:0> numeros = [1, 2, 3]
irb(main):004:0> numeros.class
O dinamismo da linguagem também permite adicionar métodos a classes existentes em tempo de execução (metaprogramação). Isto também vale para as classes das bibliotecas padrão:
def inverso
# inverso agora é um metodo válido para qualquer número
print 2.inverso
Fortemente tipada porque, apesar de sua tipagem dinâmica, os tipos importam para o interpretador. O que é número, é número. O que é string, é string e assim por diante. Conversões entre tipos não são feitas implicitamente.
#1.6 Gems
Numa linguagem chamada Ruby, é bem sugestivo o nome "gem" (jóia, pedra preciosa) para um pacote de código. Aqui, quando falamos de pacotes, estamos nos referindo quase sempre a uma biblioteca de classes. Também pode ser um aplicativo. Numa gem, todo o código está empacotado para facilitar a distribuição, instalação e manipulação de versões.
O gerenciador de pacotes oficial do Ruby é o RubyGems. Ele é um framework para gerenciamento das gems com um repositório online onde elas são publicadas para serem reutilizadas em qualquer projeto. Depois de instalado o Ruby, é recomendável atualizar o RubyGems para a ultima versão. A maneira mais fácil de fazer isto é pelo comando:
Para instalar ou atualizar uma gem, usamos estes comandos:
$ gem update gem_name
Onde gem_name é o nome da gem, conforme informado pelo desenvolvedor.
Por exemplo, para instalar uma gem para comunicação com o Twitter, o comando seria este:
Lembrando que a gem 'twitter' é apenas uma entre as várias existentes.
Para usar o código desta gem num aplicativo, usamos o método require no início do código fonte:
Twitter.update("Twittando com #ruby!")
Mais informações sobre como usar o RubyGems, inclusive para criar e publicar novas gems, podem ser encontradas nos guias do RubyGems.
#1.7 Bundler
Para não ter que incluir dentro de cada projeto todas as gems utilizadas e ter sempre as versões corretas das gems, existe o Bundler, um gerenciador de dependências que ajuda a manter um ambiente consistente para a execução dos aplicativos.
Instalando o Bundler (repare queo Bundler também é uma gem!):
As dependências são especificadas no arquivo Gemfile que deve ficar na raiz do projeto. O Gemfile deve conter o endereço da fonte onde buscar as gems, seguido da especificações de cada gem. Exemplo: