Home » Tutoriais » Programação » Conheça a linguagem Ruby on Rails

Conheça a linguagem Ruby on Rails

:: por Redação macmais :: 15/09/2011 :: 1 comentário

por Matheus Paschoal*

Enquanto o mundo ocidental, em meados da década de 1990, começava a experimentar uma nova linguagem de programação chamada Java, na Terra do Sol Nascente, Yukihiro Matsumoto (mais conhecido como Matz) desenvolvia uma nova linguagem dinâmica e de código aberto, chamada Ruby.

Essa linguagem foi desenhada para diversos tipos de uso e contemplava vários paradigmas de programação. Atualmente, seu funcionamento é independente de plataforma, ou seja, possui implementação para muitos sistemas operacionais, entre eles Linux, Unix, Mac OS X e, obviamente, Microsoft Windows.

Matz, seu criador, gosta de enfatizar que a linguagem Ruby foi desenvolvida para aumentar a produtividade e a diversão das pessoas, de maneira que ela beneficie o lado “humano” em vez do lado “máquina” da coisa.

Até julho de 2004, a linguagem Ruby era pouco usada no mundo ocidental, contudo, ganhou popularidade quando David Heinemeier Hansson publicou uma nova ferramenta, chamada Rails, para criar ricas aplicações web. As facilidades dessa ferramenta colocaram em destaque o poder da linguagem Ruby. Muito pode ser feito fora dos domínios da internet usando Ruby, como programas nativos para OS X (usando RubyCocoa), roteiros (scripts) para servidor e também automação de tarefas.

Instalação

Na versão do Mac OS X 10.5 (Leopard), a Apple incluiu, em sua instalação-padrão, uma versão pré-configurada do Ruby, mas, infelizmente, algo deu errado e é recomendável instalar o Ruby novamente para que tudo funcione a contento. No Snow Leopard, a versão pré-instalada funciona perfeitamente e já está pronta para uso.

Se você ainda não fez a transição para o 10.6, pode baixar os instaladores do Ruby, que facilitam todo o processo, ou pode fazer tudo “na mão”, a partir do código-fonte.

Conheça alguns instaladores:

Rubyosxhttp://rubyosx.rubyforge.org/
Rubystackhttp://bitnami.org/stack/rubystack

Instalando a partir do código-fonte:

Para instalar a partir do código-fonte, é necessário ter a biblioteca Xcode 2.0 ou superior instalada no Mac. O Xcode está disponível nos DVDs de instalação do Mac OS X. Digite no Terminal os seguintes comandos:

Passo 1 – Instalando Readline

$ curl -O ftp://ftp.gnu.org/gnu/
readline/readline-5.2.tar.gz
$ tar xzvf readline-5.2.tar.gz
$ cd readline-5.2
$ ./configure –prefix=/usr
$ make
$ sudo make install
$ cd ..

Passo 2 – Instalando o Ruby

$ curl -O ftp://ftp.ruby-lang.org/
pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
$ tar xzvf ruby-1.8.7-p174.tar.gz
$ cd ruby-1.8.7-p174
$ ./configure –prefix=/usr –enable-
pthread –with-readline-dir=/usr
$ make
$ sudo make install
$ sudo make install-doc
$ cd ..

Com isso, você terá uma versão instalada do Ruby em seu Mac. Para verificar se tudo está a contento, basta digitar o código abaixo no Terminal. Você deverá receber uma resposta idêntica ou muito similar a esta:

$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel
174)[i686-darwin10]

Para usufruir de todo o poder do Ruby, a ferramenta RubyGem é necessária, pois dará acesso à rápida instalação de diversos pacotes (chamados de “gems”, ou gemas, em português, nome bastante apropriado).

$ curl -O http://rubyforge.org/frs/
download.php/60718/rubygems-1.3.5.tgz
$ tar xzvf rubygems-1.3.5.tgz
$ cd rubygems-1.3.5
$ sudo ruby setup.rb
$ cd ..

Agora, sim, o Ruby está completamente instalado. Mas antes de começar a brincadeira, um pouco de teoria é necessária.

Falando em Ruby

Para entender melhor como funciona a linguagem Ruby, usaremos uma ferramenta do Terminal chamada irb.

$ irb
irb(main):001:0>

Com ela, pode-se utilizar a linguagem e ter uma resposta dinâmica sobre o que inserirmos. Neste passo, todos os comandos inseridos estarão dentro de uma sessão de irb.

irb> print “Ola mundo!”
=> Ola mundo!

Se anda como um pato, é um pato!

Em Ruby, tudo pertence a uma classe, e por pertencer a ela, sua herança a acompanha.

irb> 1.class
=> Fixnum

Em uma linguagem orientada a objetos, classes possuem métodos, que são funções que podem ser executadas em um contexto específico ou, genericamente, em uma classe. No exemplo acima, chamamos o método class de um objeto específico, neste caso, o número 1.

O método class nos retorna qual é a classe do objeto.

irb> “palavra”.class
=> String
irb> [“Banana”, “Laranja”, “Uva”].class
=> Array

Variáveis

Em analogia ao mundo real, variável seria uma caixa (virtualmente de qualquer tamanho) com um nome determinado em sua criação. Qualquer objeto pode ser guardado

nessa caixa. Em Ruby, as variáveis obrigatoriamente possuem nomes definidos em letras minúsculas, que podem conter não somente letras, mas também dígitos e o sinal underscore.

irb> cor = “azul”
=> “azul”
irb> numero = 300
=> 300
irb> base_decimal = 10
=> 10

Números

Um número pode ser do tipo mais básico, inteiro (interger), ou estar acompanhado de um símbolo positivo ou negativo na frente.

irb> 100
=> 100
irb> -25
=> -25
irb> 100.class
=> Fixnum

Números decimais possuem uma classe específica e são chamados de flutuantes (floats).

irb> 0.85
=> 0.85
irb> 0.85.class
=> Float

Palavras

Palavras são chamadas de string, podem conter qualquer tipo de caractere (letras, dígitos, pontuação) e são cercadas por aspas duplas ou normais.

irb> “palavra”
=> “palavra”
irb> “palavra”.class
=> String
irb> “Este é um bom exemplo de string!”
=> “Este é um bom exemplo de string!”

Misturando tudo!

Com esses três tipos de objetos, já é possível realizar diversas funções úteis, como operações matemáticas com números e variáveis.

irb> 13 + 74
=> 87
irb> divisor = 8
irb> 72 / divisor
=> 9

Ruby on Rails:linguagem Ruby foi desenvolvida para aumentar a produtividade e a diversão das pessoas

Sopa de letrinhas A linguagem Ruby foi desenvolvida para aumentar a produtividade e a diversão das pessoasirb> bananas = 9

irb> laranjas = 15
irb> abacaxis = 20
irb> bananas + laranjas + abacaxis
=> 44

Ou incluir variáveis dentro de textos. Para incluir uma variável dentro de uma string, usa-se #{nome_da_variavel}.

irb> revista = “Mac+”
irb> “Hey! Eu estou lendo a #{revista}.”
=> “Hey! Eu estou lendo a Mac+.”

Alguns outros objetos

Dentro do Ruby, existem diversos outros tipos de obje-tos. Symbol, Constant, Array e Hash estão entre os mais populares.

Symbols

Símbolos são parecidos com variáveis, mas são usados para representar nomes ou strings. Seu tamanho, em memória, é relativamente menor que o de uma variável. Também são capazes de identificar elementos dentro de um Hash (do qual falaremos adiante).

Constants

São como variáveis, porém seus nomes se iniciam com letra maiúscula e seu conteúdo geralmente não é alterado. Uma vez definido, ele deverá continuar assim. Quando tentamos alterar o conteúdo de uma constante dentro do Ruby, ele vai reclamar.

irb> Capital = “Brasília”
=> “Brasília”
irb> Capital = “Rio de Janeiro”
(irb):2: warning: already initialized constant
Capital
=> “Rio de Janeiro”

Arrays

É como uma lista de objetos: seus elementos devem são cercados por colchetes e separados por vírgula na criação.

irb> lista_para_feira = [ “maçã”, “banana”, “laranja”,
“alface”, “tomate” ]
irb> lista_para_feira
=> [ “maçã”, “banana”, “laranja”, “alface”, “tomate”
]

Para se inserir um objeto dentro da lista, podemos usar o método push; para remover, o método delete.

irb> lista_para_feira.push(“salsa”)
irb> lista_para_feira.delete(“banana”)
irb> lista_para_feira
=> [ “maçã”, “laranja”, “alface”, “tomate”, “salsa“ ]

Hashes

Um Hash pode ser entendido como uma lista em que seus elementos possuem nomes, como um dicionário, em que cada nome tem sua “definição”. Devem ser cercados por chaves, e nomes e valores devem ser relacionados utilizando o símbolo =>.

irb> atributos = { “nome” => “José Ninguém”, “sexo”
=> “masculino”, “idade” => 14 }
=> { “nome” => “José Ninguém”, “sexo” => “masculino”,
“idade” => 14 }
irb> atributos.class
=> Hash

E se voa como um pato? É um pato!

Além das classes que acompanham a linguagem Ruby, é possível criar novas classes para outros tipos de objetos, cada uma com suas particularidades.

Para modificar qualquer código Ruby, você pode usar seu editor preferido. Uma ótima opção para os usuários de Mac é o bem conceituado Textmate (€ 39, www.macromates.com), que tem uma versão de testes disponível para download.Mas existem outros, como o tradicional BBEdit (US$ 125, www.barebones.com/products/bbedit). Se preferir, o Editor de Texto que vem instalado no Mac OS X também pode ser usado, mas ele é bastante limitado.

A partir do editor escolhido, basta salvar o arquivo (de preferência com a extensão .rb) e executá-lo diretamente no Terminal chamando o executável do Ruby ou chamá-lo como biblioteca dentro do irb.

# arquivo.rb
print “Olá mundo!”
$ ruby arquivo.rb
Olá Mundo!
$ irb

irb> require ‘arquivo.rb’
Olá mundo! => true

Criando uma classe e um método

Classes, por padrão, possuem nome similar ao de uma constante, que é iniciado com uma letra maiúscula. Porém seu nome é antecedido por class, o que define seu novo status, e seu término é definido pela palavra end.

Métodos geralmente representam uma ação, recebendo ou não parâmetros. É necessário que seu nome seja digitado apenas com letras minúsculas, dígitos e alguns caracteres especiais (interrogação e exclamação).

Dentro do arquivo .rb, criaremos uma nova classe chamada Lampada, bem como um método para ela.

# arquivo.rb
class Lampada
def ligar
print “Ligada!”
end
end

Uma classe, quando utilizada, gera um novo objeto, também conhecido como instância. Para criar uma nova instância, normalmente utiliza-se o método new, e tal instância pode ser atribuída a uma variável para ser utilizada futuramente.

Para chamar um método, adicionamos ao final da variável em que ela foi atribuída ou da classe o caractere ponto e o nome do método. Por exemplo, chamando o método liga de uma lâmpada criada.

lamp = Lampada.new
lamp.ligar

De acordo com a classe e o método criados, isso retornaria a frase “Ligada!”

Pode-se aproveitar a facilidade do irb e chamar nossa nova classe para acompanharmos seu funcionamento.

Ruby on Rails: criando uma classe e um método

$ irb
irb> require ‘arquivo.rb’
=> True
irb> lamp = Lampada.new
irb> lamp.ligar
=> Ligada!

Ao alterar nosso arquivo .rb, é necessário sair e recarregar o irb novamente para que as mudanças surtam efeito.

Variáveis de instância

Quando uma nova instância é criada, seu estado é determinado pela classe em sua criação. Entretanto, uma instância pode possuir variáveis próprias, o que a diferenciará de outra instância da mesma classe.

Variáveis de instância funcionam da mesma forma que uma variável comum em Ruby, porém seu nome se inicia com @, e enquanto o objeto existir, essa variável existirá. Essas variáveis são geralmente usadas para definir um atributo específico do objeto.

Seguindo nosso exemplo, criaremos uma variável de instância para determinar se a lâmpada está ligada ou não. A variável inicialmente será false, e quando o método Ligar for chamado, o conteúdo da variável mudará para true.

# arquivo.rb
class Lampada
@ligada = false
def liga
@ligada = true
print “Ligada!”
end

end
$ irb
irb> require ‘arquivo.rb’
irb> lamp = Lampada.new
irb> lamp
=> #<Lampada:0x1003aec50>
irb> lamp.liga
=> #<Lampada:0x1003aec50 @ligada=true>

Um dos pontos bastante favoráveis do Ruby é sua legibilidade. Sua sintaxe foi criada para aproximar-se à de um texto comum. Métodos que geralmente terminam com ponto de exclamação representam ordens, e métodos que terminam com pontos de interrogação representam perguntas.

Exemplo:

lamp.ligar!
lamp.ligada?

Por enquanto, é isso o que tínhamos para falar sobre o Ruby. Nas próximas edições da MAC+, continuaremos nosso curso com exemplos práticos. Até lá!

Matheus Paschoal é consultor e desenvolvedor de soluções para web e apaixonado pela dupla Ruby + OS X.

*Matéria originalmente publicada na MAC+ 43.

irb> bananas = 9
irb> laranjas = 15
irb> abacaxis = 20
irb> bananas + laranjas + abacaxis
=> 44
Ou incluir variáveis dentro de textos. Para incluir uma
variável dentro de uma string, usa-se #{nome_da_variavel}.
irb> revista = “Mac+”
irb> “Hey! Eu estou lendo a #{revista}.”
=> “Hey! Eu estou lendo a Mac+.”
Alguns outros objetos
Dentro do Ruby, existem diversos outros tipos de obje-tos.
Symbol, Constant, Array e Hash estão entre os
mais populares.
Symbols
Símbolos são parecidos com variáveis, mas são usados para
representar nomes ou strings. Seu tamanho, em memória,
é relativamente menor que o de uma variável. Também são
capazes de identificar elementos dentro de um Hash (do
qual falaremos adiante).
Constants
São como variáveis, porém seus nomes se iniciam com letra
maiúscula e seu conteúdo geralmente não é alterado. Uma
vez definido, ele deverá continuar assim. Quando tentamos
alterar o conteúdo de uma constante dentro do Ruby, ele
vai reclamar.
irb> Capital = “Brasília”
=> “Brasília”
irb> Capital = “Rio de Janeiro”
(irb):2: warning: already initialized constant
Capital
=> “Rio de Janeiro”irb> bananas = 9
irb> laranjas = 15
irb> abacaxis = 20
irb> bananas + laranjas + abacaxis
=> 44
Ou incluir variáveis dentro de textos. Para incluir uma
variável dentro de uma string, usa-se #{nome_da_variavel}.
irb> revista = “Mac+”
irb> “Hey! Eu estou lendo a #{revista}.”
=> “Hey! Eu estou lendo a Mac+.”
Alguns outros objetos
Dentro do Ruby, existem diversos outros tipos de obje-tos.
Symbol, Constant, Array e Hash estão entre os
mais populares.
Symbols
Símbolos são parecidos com variáveis, mas são usados para
representar nomes ou strings. Seu tamanho, em memória,
é relativamente menor que o de uma variável. Também são
capazes de identificar elementos dentro de um Hash (do
qual falaremos adiante).
Constants
São como variáveis, porém seus nomes se iniciam com letra
maiúscula e seu conteúdo geralmente não é alterado. Uma
vez definido, ele deverá continuar assim. Quando tentamos
alterar o conteúdo de uma constante dentro do Ruby, ele
vai reclamar.
irb> Capital = “Brasília”
=> “Brasília”
irb> Capital = “Rio de Janeiro”
(irb):2: warning: already initialized constant
Capital
=> “Rio de Janeiro”

1 comentário

  1. Fábio Rogerio comentou 0:21 às 21 de fevereiro de 2012

    Ruby 1.8.7 já é velhinho. Deveria atualizar a matéria para versão 1.9.3-p0.

Deixe um comentário

 

Publicidade