Boas razões para levar o Rails a sério

Neste artigo, falarei sobre algumas das várias vantagens desse maravilhoso framework, em seguida darei minha opinião sobre ele e, por fim, mostrarei como criar um ambiente Rails no seu Windows e a criação de sua primeira aplicação. Acabou ficando um pouco grande, mas a leitura vale a pena :-)

“O Rails é um framework que torna mais fácil desenvolver, instalar e manter aplicativos web. Nos meses seguintes à sua distribuição inicial, ele passou de um brinquedo desconhecido a um fenômeno mundial. Ele ganhou prêmios e, sobretudo, tornou-se o framework preferido para a implementação de um amplo espectro dos chamados ‘aplicativos web 2.0’. Ele não é apenas um modismo entre hackers radicais: muitas multinacionais estão utilizando-o para criar aplicativos web.” (Extraído do livro Agile Web Development With Rails)

O parágrafo anterior não causou muit

o impacto por si só. Mas depois de conhecer alguns conceitos do Rails, tenho certeza de que você irá repensar sua forma de fazer as coisas. Vamos lá!

O Rails e o Ruby

O Ruby é uma linguagem totalmente orientada a objetos e dinamicamente tipada. Isso quer dizer que na hora de declarar uma variável qualquer, não é necessário informar seu tipo, o Ruby identifica automaticamente. E como tudo no Ruby é objeto, ele irá criar uma instância da classe correspondente ao tipo da variável. Por exemplo, o número 1 é uma instância da classe Fixnum, assim como “Ruby on Rails” é uma instância da classe String. Além disso, o Ruby é uma linguagem natural para escrita e leitura. Observe uma estrutura condicional em PHP e compare com Ruby:

PHP:

if ( $balance > 999999 ) { $user->isMilionaire() }

Ruby:

@user.is_milionaire! if balance > 999_999

Outro ponto interessante no Ruby, é que ele trata os tradicionais operadores aritméticos de adição (+) e subtração (-) como métodos. Imagine que você queira excluir os valores no Array A que coincidam com os valores no Array B. Observe a implementação em PHP e em Ruby:

array_a = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
array_b = ["Item 2", "Item 4"]

PHP:

for( $a = 0; $a < count($array_a); $a++ ){
for( $b = 0; $b < count($array_b); $b++ ){
if( $array_a[$a] == $array_b[$b] ){
array_splice($array_a, $a, 1);
break;
}
}
}

Ruby:

array_a – array_b

Resultado obtido com ambos os códigos:

array_a = ["Item 1", "Item 3", "Item 5"]

Nesse caso, o sinal de subtração (-) é um método do objeto Array A que recebe o Array B como parâmetro, compara os valores de ambos os Arrays e faz a devida ”subtração”.

Código escrito em Ruby é elegante, inteligível e literalmente, dispensa comentários. Além do ganho de produtividade.

O Rails e o MVC

O MVC (Model-View-Controller) é uma forma elegante de manter o desacoplamento do código, tornando o desenvolvimento e a manutenção fáceis e ágeis.

O Model é responsável pelo acesso ao banco de dados, utilizando o conceito de Object-Relational Mapping. O ORM trata cada tabela do banco de dados como uma classe, seus registros como objetos dessa classe e campos como atributos desses objetos, tornando a manipulação dos dados mais simples e rápida, causando um aumento da produtividade. Em aplicações Rails, você quase não vê SQL. O Model também é responsável pela lógica de negócios. Suponha que o usuário queira fazer uma compra, mas só poderá concluir o pedido se houver informado um número válido de cartão de crédito e um endereço para entrega. O Model é o responsável por fazer as validações necessárias e retornar os resultados.

A View é responsável por capturar as entradas do usuário através do navegador e enviar ao Controller, que prepara as informações e interage com o Model; quando o Controller obtém os resultados da interação, prepara os dados novamente e envia de volta para a View. Com isso, a View exibe ao usuário o resultado dos dados inseridos anteriormente. As Views são as páginas HTML que vemos no navegador.

O Rails e o RESTful

O RESTful é um conceito que utiliza de forma correta os métodos do protocolo HTTP para manipulação de dados e requisições. Comumente é utilizado o método GET para requisitar um recurso existente no servidor e POST para criar um novo; há também o método PUT para atualizar e o DELETE para excluir – tome como recurso, qualquer informação armazenada no servidor, como arquivos ou registros em bancos de dados. Com isso, são utilizados apenas 7 métodos nos Controllers, que são suficientes para tratar as requisições das Views e manipular qualquer recurso no servidor.

Dependendo da necessidade de cada projeto, o Rails garante a flexibilidade de não utilizar alguns desses métodos ou até criar outros. Com a utilização do padrão RESTful, mais uma vez o Rails consegue manter o código elegante e organizado, gerando mais produtividade.

O Rails e as Migrations

As Migrations são informações sobre a estrutura do banco de dados utilizado na aplicação. Sua finalidade é criar um versionamento de todo o banco, armazenando cada alteração feita e possibilitando que qualquer alteração seja desfeita. Com isso, o desenvolvedor terá uma segurança a mais, podendo voltar a um estado anterior caso implemente algo que dê problemas. As Migrations tem dois métodos, um com instruções para avançar no desenvolvimento e, outro para voltar, caso algo dê problema. Com isso, você terá um controle de versões do banco de dados. E para aumentar ainda mais a produtividade, o Rails dispõe do Rake, um utilitário para executar as Migrations e várias outras tarefas repetitivas e chatas.

O Rails é DRY

O Don’t Repeat Yourself é um conceito que diz que um trecho qualquer de código deve ser escrito em apenas um local e reutilizado em qualquer outro local da aplicação, tornando o Rails um framework extremamente produtivo. Com isso, quando precisar refatorar o código, terá de fazer em apenas um local, e não mais perder tempo procurando todas as duplicações e correndo o risco de criar bugs. Isso unido ao conceito de Convention Over Configuration, ao qual você não precisa perder tempo editando arquivos de configurações para poder rodar sua aplicação, bastando seguir as convenções ao invés das configurações, há ainda, mais aumento na produtividade.

Por exemplo, no Rails os Models são classes que correspondem a uma tabela no banco de dados. Se temos uma classe User, a tabela correspondente será seu plural Users, assim como seu Controller se chamará UsersController. Seguindo essa convenção, você ganha tempo não tendo de configurar coisas desnecessárias, o Rails faz o trabalho pesado e chato para você.

O Rails é ágil

Você já deve ter percebido a quantidade de vezes que *produtividade* aparece. Isso é devido ao conceito de Desenvolvimento Ágil. Tal conceito favorece 4 valores. São eles:

1. Indivíduos e interações em vez de processos e ferramentas.
2. Software em funcionamento em vez de uma documentação abrangente.
3. A colaboração do cliente em vez da negociação de um contrato.
4. Responder a mudanças em vez de seguir um plano.

Esses valores fazem parte do AgileManifesto, ao qual possui um total de 12 princípios para o desenvolvimento de software ágil e de qualidade. Visite AgileManifesto.org para conhecer esses princípios.

Minha opinião sobre o Rails

O Rails mudou minha concepção de programação, me poupando da parte chata e tornando o desenvolvimento extremamente divertido, além de realmente ajudar a produzir software de qualidade. Com isso, você pode dedicar mais tempo para interagir com o cliente, coletando feedbacks constantes; aceitar mudanças com mais facilidade e implementar também.

Outra coisa interessante que me chamou a atenção é a capacidade do Rails de gerar uma aplicação funcional com apenas algumas linhas de comando no prompt. Na maioria dos casos, o código gerado será totalmente substituído no final, mas com isso, você já consegue mostrar uma visão geral da coisa funcionando, agregando valor ao seu trabalho e gerando confiança junto ao cliente.

Aprender Rails é tão simples e divertido quanto criar as aplicações. Só não pense que você vai se tornar um programador Jedi em 21 dias. Como em qualquer área do conhecimento, a excelência só vem com a prática constante.

Rodando o Rails no seu Windows

Antes de começar, baixe e salve em uma pasta qualquer tudo que irá precisar. Segue os links das versões que testei e sei que funcionam.

1. Ruby 1.8.7 – 2. RubyGems 1.3.7 – 3. SQLite3.dll

Após concluir os downloads, execute o instalador do Ruby e clique em Next até vir a tela abaixo. Quando chegar aqui, marque as duas checkboxes – é extremamente importante que isso seja feito – e clique em Install.

Tela de instalação do Ruby

Após instalar o Ruby, você precisará instalar o RubyGems, que é o gerenciador de pacotes do Ruby. Extraia o arquivo .zip e execute o arquivo setup.rb. A tela abaixo irá aparecer, basta esperar que ela se fechará automaticamente quando finalizar o processo.

Tela de instalação do RubyGems

Com o RubyGems instalado, o próximo passo é instalar o Rails. Sua versão atual é a 3.0.0. Para isso, abra o prompt de comando. Se nunca fez isso, vá ao Menu Iniciar / Executar ou pressione Windows + R no teclado e digite “cmd”. Com o prompt aberto, digite “gem install rails”. Aguarde até que o download do Rails seja concluído. A tela irá se parecer com essa:

Tela de instalção do Rails

Note que, além do Rails, foram instaladas várias dependências, além de suas respectivas documentações – eu retirei da imagem acima as documentações, então não estranhe se estiver diferente da sua, e também, não se preocupe se aparecerem alguns erros na compilação da documentação, isso não irá atrapalhar em nada.

O Rails utiliza inicialmente um banco de dados para desenvolvimento que é o SQLite 3. Para instalar o SQLite, ainda com o prompt aberto, digite “gem install sqlite3-ruby” e aguarde o download. A tela gerada na instalação será parecida com a anterior.

Importante! O SQLite costuma gerar um erro quando você chama o Rake para executar as Migrations e utilizar o banco de dados. Para corrigir esse problema, copie o arquivo “SQLite3.dll” que está no arquivo .zip que você baixou para a pasta “c:\windows\system32”.

Pronto! Feito isso, você tem um ambiente Rails rodando no seu Windows. Se você usa outro sistema operacional, recomendo dar uma lida no site oficial do Rails no Brasil.

Criando sua primeira aplicação web ágil com Rails

Imagine uma situação. Sua mãe tem uma lista de telefones daquelas de papel, que por sinal, já não cabe mais nada, além de estar uma bagunça e faltando páginas. Ela decide que agora é uma senhora moderna e quer entrar para era digital. Ela lhe pede para ensinar a utilizar uma lista virtual. Você, malandrão, lhe pede uns trocados para elaborar a mais moderna Agile Phone List With Rails. Ela, impressionada com tanto jargão em uma só frase, concorda. Você abre seu prompt e digita os seguintes comandos:

c:\>rails new PhoneList
c:\>cd PhoneList
c:\PhoneList>rails g scaffold friend name:string address:string phone:integer
c:\PhoneList>rake db:migrate
c:\PhoneList>rails s

Terminada essa trabalheira toda, você abre seu navegador e digita “http://localhost:3000/friends” e talvez sua mãe tivesse se impressionado, mas ela disse que foi tão fácil que só valeria a metade dos trocados. Mas pela agilidade, ela vai lhe pagar o dobro – só não espere que um cliente no mundo real faça isso. Ficou curioso para saber o que aconteceu? Deixe a preguiça de lado e faça o Rails rodar. :-B

Importante! No comando do scaffold, o friend é no singular mesmo, já no endereço no browser, é no plural. Explicarei isso em outro artigo. Lembre-se que até agora você não viu código algum. O que você digitou foram apenas alguns comandos do Rails para facilitar o seu trabalho.

Finalizando

São quase 6 da manhã e estou morrendo de fome e sono – para quem acha isso impressionante, dê uma lida no post do Thiago Feijó – e finalmente o artigo parece estar pronto. Para os próximos posts, pretendo mostrar melhor como o Rails funciona, falando sobre as convenções, o MVC, o RESTful, mostrando como conectar outro banco de dados e tudo mais. Então, espero que gostem e tirem bom proveito.

Li em um artigo hoje que só vale a pena aprender uma linguagem – ou framework – nova se ela quebrar seus velhos paradigmas. Concordei com isso e digo com muito orgulho: O Rails vai quebrar seus paradigmas e fazer de você um programador muito mais feliz.

Um grande abraço!

Esta entrada foi publicada em Desenvolvimento, Server-Side e marcada com a tag , , , , , . Adicione o link permanente aos seus favoritos.

Deixe uma resposta

Faça o login usando um destes métodos para comentar:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s