Ruby Lessons #1 – Introdução

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'
=> "Hello World"
  • Ou salvar os scripts em arquivos .rb e executá-los através do interpretador “ruby” ou “ruby.exe”
$ ruby hello.rb
Hello World
  • 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
=> false
irb(main):002:0> 'foo'.upcase
=> "FOO"

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: '
nome = gets
puts 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]
=> [1, 2, 3]
irb(main):004:0> numeros.class
=> Array

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:

  class Numeric
    def inverso
      1.0 / self
    end
  end

  # inverso agora é um metodo válido para qualquer número
  print 2.inverso
  0.5

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:

$ gem update --system

Para instalar ou atualizar uma gem, usamos estes comandos:

$ gem install gem_name
$ 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:

$ gem install twitter

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:

require 'twitter'

Twitter.configure do |config|
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

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!):

$ gem install bundler

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:

source 'https://rubygems.org'
gem 'nokogiri'
gem 'rack', '~>1.1'
gem 'rspec', :require => 'spec'

Para instalar ou atualizar todas as gems necessárias ao projeto, usamos o comando:

$ bundle install

Esta foi a primeira lição. Até a próxima!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s