Postado em abril 4, 2010 às 5:58 am

[Mini curso] Do ruby ao Rails – Parte 1

Pessoal, eu tenho estudado ruby e cada vez mais me apaixonado pela linguagem. O aprendizado dela é fácil, e o dinamismo da linguagem é algo extremamente encantador. Por isso, resolvi colocar um mini curso de Ruby aqui no site, que inicialmente vai englobar a linguagem ruby, e depois o Rails, framework  MVC para a criação de aplicativos web tão conhecido dos desenvolvedores ruby e que tem uma ampla simpatia e utilização no mercado. Sem mais delongas, vamos lá!


Introdução ao Ruby

Ruby é uma linguagem de programação interpretada multi plataforma que tem muitas características em comum com outras linguagens de script como Perl e Phyton. Contudo a sua versão de orientação a objetos é mais completa que aquelas linguagens e, em muitos aspectos, o Ruby tem mais em comum com o bisavô das linguagens OOP (programação orientada a objetos)’puras’, o Smalltalk. A linguagem Ruby foi criada por um programador japonês chamado Yukihiro Matsumoto (mais conhecido por ‘Matz’) e foi liberada pela primeira vez em 1995.

Atualmente, muito da empolgação em volta do Ruby pode ser atribuída ao framework de desenvolvimento web chamado Rails – popularmente conhecido como ‘Ruby On Rails’. Embora o Rails seja um framework impressionante,  ele não é a coisa mais importante do Ruby.  Para ser sincero, se você decidir mergulhar fundo no desenvolvimento com Rails sem antes dominar o
Ruby, você poderá acabar fazendo uma aplicação que nem você mesmo entende. Por isso decidi entrar inicialmente no Ruby, para depois passar para o Rails.

Onde baixar?

A última versão do ruby pode ser encontrada em www.ruby-lang.org, onde usuários do windows podem baixar o instalador do Ruby. Usuários de OS X, Linux e Solaris podem efetuar a instalação diretamente através dos repositórios (utilizando port, apt-get ou semelhante, e pfexec, respectivamente). Esse é o site oficial da linguagem, e conta inclusive com um console para que você teste o ruby diretamente no browser. O ruby conta ainda com uma outra implementação, chamada IRON Ruby, que roda em cima do .NET framework (IRON é uma sigla – Implementation Running On .Net). A própria Microsoft apóia o projeto, e incluiu no framework 4.0 os tipos dinâmicos, para facilitar a implementação de Ruby, Python e outras linguagens semelhantes na plataforma .NET.

IDEs para desenvolvimento em Ruby

Eu não vou utilizar nenhuma IDE no início, pois todas as aplicações serão escritas em um editor de texto comum, e executadas em um terminal (prompt de comando, para os usuários Windows). Mas posteriormente, se quiserem utilizar IDEs para o desenvolvimento, existem inúmeras no mercado, como o RubyMine(que é pago), o Aptana Rad Rails, o Ruby in Steel (que é um plugin para desenvolvimento ruby dentro do Visual Studio), além de plugins específicos para o Eclipse e para o NetBeans.

Mãos à obra

Eu, por ser programador, entendo bem que programadores não gostam de enrolação, então vamos ao código. Abra seu editor de texto(Eu estou usando o Gedit no Ubuntu, mas pode ser o Bloco de notas do Windows ou qualquer outro editor de texto simples), e escreva a linha abaixo:

puts "Olá Ruby!"

Após isso, salve o arquivo como HelloWorld.rb, e vá até o seu terminal/prompt de comando e execute o arquivo com o comando “ruby + nomedoarquivo.rb”. Veja na imagem abaixo como ficou:

o famoso "Olá, mundo" em Ruby
O famoso “Olá, mundo” em Ruby

Até então, tudo muito simples. Vejamos então alguns métodos implícitos de manipulação de strings no Ruby. Substitua o código do seu hello world pela linha abaixo, e vejamos o que ocorre:

puts "hello ruby!".reverse

O resultado que teremos é o seguinte:

Hello world em ruby, utilizando o método reverse
Hello world em ruby, utilizando o método reverse

O ruby já possui funções próprias de manipulação de string como reverse, mostrada acima, além de upcase, downcase, delete, insert, match e mais uma longa lista disponível neste link.

Vamos agora solicitar uma entrada de dados ao usuário. No Ruby, isto é feito utilizando o método gets(). Substitua o código do seu arquivo pelo código abaixo:

print " digite seu nome "
nome = gets()
print " Olá #{nome} "

Verifique se a saída foi exatamente esta:

O hello world, agora com entrada de dados
O hello world, agora com entrada de dados

Perceba que eu usei print ao invés de puts. Isso por que o puts pula uma linha após exibir a string, e a minha intenção era que o cursor continuasse na mesma linha.

Tipagem em Ruby

Ao contrário do que possa parecer, o Ruby é uma linguagem fortemente tipada. Não há definição de tipos na declaração das variáveis, pois a tipagem é dinâmica, ou seja: Os tipos são definidos em tempos de execução. O que nos permite uma maior flexibilidade na manipulação de atributos do ruby, como demonstrado no código abaixo. Crie um arquivo chamado MinhaPrimeiraClasse.rb e insira o seguinte código:

class Teste
attr_accessor :Name
end

x = Teste.new

x.Name = "Bruno"
puts x.Name
puts x.Name.class
puts "\n"
x.Name = 345
puts x.Name
puts x.Name.class

Vejamos o resultado:

figura4_primeiraclasse
Veja a exibição dos valores e tipos das propriedades

No código acima, criei uma classe com um atributo chamado Nome, instanciei um objeto desse tipo e ao longo do código, atribuí diferentes valores a ele. em seguida, exibi seu valor e seu tipo. Veja que os tipos são distintos, ou seja: Há tipagem, não são todos do tipo Object.

Repare que na segunda linha, eu utilizo o comando attr_accessor para criar o atributo Nome. Este comando deixa implícito ao interpretador do Ruby de que esse atributo tem os métodos get e set públicos. Essa é uma facilidade que a linguagem possui, para que não tenhamos que ficar escrevendo linhas e mais linhas de código. Além do accessor, podemos definir de forma semelhante apenas o get ou o set do atributo em questão, substituindo o attr_accessor por attr_reader no caso de o atributo ter apenas o get público, ou att_writer no caso de apenas o set ser público. Podemos também escrever normalmente os métodos get e set. Abaixo, demonstro as maneiras diferentes de fazê-lo.

class Pessoa
attr_accessor :Nome, Idade
end

Agora, utilizando attr_reader e attr_writter:

class Teste
attr_reader :Name, :Idade
attr_writer :Name, :Idade
end

E por último, criando os getters e setters manualmente:

class Teste
       def setNome(nome)
          @nome = nome
        end
       def getNome
          @nome
        end
       def setIdade(idade)
          @idade = idade
        end
       def getIdade
          @idade
        end
end

Repare que eu não declarei as variáveis @nome e @idade antes de utilizá-las nos métodos. Isso ocorre por que o Ruby entende que as variáveis iniciadas com “@” são atributos da classe, logo, não é preciso instanciá-los. Repare também que nos gets eu simplesmente coloco o nome da variável, sem utilizar a palavra-chave return, comum em outras linguagens. Isso por que o ruby entende que a última linha de cada método é o retorno, também eliminando a necessidade de escrever o return.

Bem, por enquanto é isso. Pretendo continuar essa série de artigos o mais breve possível. Espero que tenham gostado. Críticas e sugestões, os comentários estão à disposição. Abraços e keep coding!

Tags:, , , ,

5 Respostas para “[Mini curso] Do ruby ao Rails – Parte 1”

  1. goncin em abril 5th, 2010 at 14:25 says:

    Opa! Estou seguindo o minicurso. A propósito: o tema do blog deixa o texto centralizado mesmo?

  2. Bruno Bemfica em abril 5th, 2010 at 14:34 says:

    Não, eu é que gosto de centralizar mesmo, pra falar a verdade. Tu não foste o primeiro a perguntar isso, heheh;

  3. Daniel Schmitz em abril 6th, 2010 at 10:38 says:

    Oi,

    mas o código centralizado hehe? O fundo preto também… tenta seguir o tema da imasters, fundo branco, fonte verdana (eu acho q é…)

  4. Bruno Bemfica em abril 6th, 2010 at 11:37 says:

    Na verdade, o wordpress não tem plugins muito bons para exibição de código, logo, centralizando ou não, o código não ficará identado.

  5. sts em junho 18th, 2010 at 16:31 says:

    You post awsome posts. Bookmarked !

Deixar um comentário