RubyonRails

Equipe: N05-Noturno
Componentes:Aline,Luiz Claudio,Luciano

copia_Logo_Ruby_Orig.jpg

1. INTRODUÇÃO

O mercado de ferramentas de desenvolvimento WEB foi sacudido, em 2003, por um novo componente: O Ruby on Rails. Atualmente também chamado de RubyonRails, Rails ou, simplesmente, RoR; trata-se da integração da linguagem de programação Ruby ao ambiente de programação Rails; constituindo-se num Meta-framework orientado a objeto, de código aberto e altamente produtivo. Neste artigo, falaremos sobre o Rails, apresentando suas características principais, além de indicar opções para aprofundamento sobre o tema.

2. HISTÓRICO

Criado em 1995 por um japonês chamado Yukihiro Matz Matsumoto, o Ruby é uma linguagem dinâmica, orientada a objeto, para desenvolvimento de aplicações WEB, as quais podem ser alteradas em tempo real. Apesar de ser uma linguagem de programação voltada para Orientação a Objetos, Ruby suporta códigos em outros paradigmas de programação. O Ruby On Rails, criado em 2003 pelo dinamarquês David Heinemeier Hansson foi desenvolvido com uma versão revisada da linguagem Ruby e como derivação de um projeto de software chamado Basecamp (um gerenciador de projetos). O Rails é chamado de Meta-framework porque, em verdade, consiste de 05 frameworks trabalhando de forma integrada, possibilitando o desenvolvimento de aplicações Web de código aberto e em conformidade com os padrões da arquitetura MVC (Model-View-Controller).

3. ENTENDENDO O RUBY ON RAILS

Ruby on Rails é uma plataforma de desenvolvimento que vem conquistando cada vez mais adeptos por utilizar uma linguagem dinâmica, com orientação a objeto e por utilizar conceitos inovadores como a convenção, ao invés de configuração (no Java, há muita configuração) o que lhe confere simplicidade, produtividade e satisfação do desenvolvedor. O Rails vem revolucionando a forma de desenvolvimento para a internet por oferecer aos programadores uma solução de desenvolvimento completa, extremamente produtiva e com baixa curva de aprendizagem.

http://www.youtube.com/watch?v=lvhZEsFmJWA

A tecnologia Rails é composta pelos seguintes frameworks: Active Record, Action Pack, Action Mailer, Active Support, Active Webservices, que compõem seu sistema de pacotes de gerenciamento. Cada framework assume determinadas tarefas no processo de desenvolvimento, assim definidas ¹:
__
¹ Extraído de: http://pt.wikipedia.org/wiki/Ruby_on_Rails

Active Record

O Active Record é uma camada de mapeamento objeto-relacional, que cuida da abstração dos dados e da integração entre a aplicação e o banco de dados.

Action Pack
Compreende o Action View (geração de códigos de visualização de usuário, para renderização em clientes WEB, em linguagens como HTML, XML, JavaScript, entre outros) e o Action Controller (controle de fluxo de negócio).

Action Mailer

O Action Mailer é o framework responsável pelo serviço de controle de emails (entrega e recebimento). Em comparação com os outros componentes, é pequeno e simples, porém poderoso. Consegue realizar diversas operações com chamadas de entrega de correspondência.

Active Support

Active Support é uma coleção de várias classes úteis e extensões de bibliotecas padrões, que foram considerados úteis para aplicações em Ruby on Rails. O Active Suport foi desenvolvido com a versão revisada do core da linguagem Ruby.

Action WebServices

Este framework trata da publicação de APIs interoperáveis com o Rails, sem a necessidade de perder tempo dentro de especificações de protocolo. Implementa WSDL e SOAP. O Action Web Service, por padrão, não é instalado a partir da versão 2.0 do Rails (a versão mais atual é a 2.3, lançada em 16 de março de 2009), devido à utilização do modelo REST. Os interessados em utilizar o Action WebServices poderão fazer sua instalação através de um plug, plug-in.

A facilidade no desenvolvimento de aplicativos utilizando o Ruby On Rails deve-se ao MVC (Molde-View-Controller), permitindo maior clareza nas implementações, juntamente com o DRY (Don´t Repeat Yourself), técnica que consiste na definição de nomes, propriedades e códigos em apenas um lugar, reaproveitando-os em outros lugares. Desta forma, torna-se desnecessário a implementação dos métodos GET e SET dentro das classes, economizando-se tempo. Outros Para aplicações WEB, notadamente as que acessam banco de dados, pode-se estruturar as classes e “injetar” os métodos e as propriedades necessárias através de funcionalidades da linguagem Ruby, alterando apenas no banco de dados. Todas as operações que se baseiam nessas informações são executadas rápida e automaticamente.

4. ESTRUTURA DO RUBY ON RAILS

Ao iniciarmos um projeto com o Ruby On Rails, é criada a seguinte estrutura de diretórios :
App: Contém todo o código da aplicação, nele encontramos os controllers, os models, as views e as classes auxiliares.
App/controllers: Classe dos controllers. Os controllers herdam de ActionControler::Base e recebem um nome seguido de _controller.rb indicando o modelo que eles controlam de maneira que seja feito o mapeamento automático da URL. Ex: contato_controller.rb.
App models: Classe de domínio da aplicação, herda de ActiveRecord::Base e os nomes recebem a extensão rb. Ex: agenda.rb.
App/views: Armazenam os arquivos templates para revisão, geralmente o nome é dado de acordo com o que será exibido. Ex: uma view que será exibida numa action index de um controller fornecedorController receberá o nome de fornecedor/index.rthml.
App/helpers: Possui classes auxiliares como fornecedor.helper.rb.
App/apis: Contém as classes para web services.
Config: Armazena os aquivos de configuração do ambiente, mapa de roteamento, banco de dados e dependências.
Components:Guarda pequenas aplicações compostas de controllers, models e views.
Db: contém o eschema.rdb com os esquemas de banco de dados, com as seqüências de migrações do seu esquema.
Lib: Neste diretório estão as bibliotecas específicas da aplicação e fica no Load path do rails.
Public: Diretório disponível para web. Ficam armazenados imagens, folhas de estilo Css, códigos java, os despachadores (dispatchers) e os arquivos Html padrão.
Script: contém os scripts de automação e geração.
Test: armazena os testes de unidade e funcionais.
Vendor: Contém as bibliotecas externas necessárias à aplicação, bem como o subdiretório, plug-ins.
_
² Conforme texto original, disponível em:
http://www.arquivodecodigos.net/arquivo/visualizar_dica.php?qual_dica=2296

5. DUELO DO DESENVOLVIMENTO

Como acontece com toda tecnologia nova, a plataforma RubonRails enfrenta, a despeito do esforço de seus entusiastas e da comunidade de desenvolvimento, a desconfiança e as tentativas de desacreditá-la, por parte dos defensores de outras plataformas, já estabelecidas. Atualmente, o embate mais significativo acontece com os defensores do PHP e do Java. De forma perversa ou por ignorância, compara-se o Rails com a linguagem PHP. Esta comparação não deve ser feita, pois é incorreto comparar framework com uma linguagem de programação. Uma comparação coerente e mais justa seria entre as linguagens (Ruby X PHP) ou entre plataformas (Ruby on Rails X CakePHP, por exemplo), pois teríamos (Linguagem+Framework) X (Linguagem+Framework). Em relação ao Java, podemos constatar facilmente as características comuns em relação à linguagem Ruby:

  1. Ruby e Java são linguagens de alto nível;
  2. Ruby e Java são linguagens de código aberto;
  3. Ruby e Java são linguagens orientadas a objeto (OO);

Entretanto, diferenças existem entre as linguagens. Pelo que pudemos perceber, enquanto Java valoriza a proteção e o encapsulamento de suas classes, permitindo o acesso apenas pela camada de interface e utilizando os métodos GET e SET nativos na classe, o Ruby rompe com este paradigma de OO, ao “injetar” os métodos e as propriedades necessárias às classes via programação. Ainda em relação a PHP, podemos afirmar que esta última é bastante amadurecida e estável, além de difundida e testada mundialmente. Além disto, todos os servidores web que se prezam trabalham com PHP, pois a linguagem funciona em qualquer sistema operacional. Não é difícil presumir que, dado o apoio que o Ruby vem obtendo da comunidade de desenvolvimento, dentro em breve estará tão forte quanto Java ou PHP, podendo todas coexistirem.
Os grandes beneficiados são os desenvolvedores e, por extensão, seus clientes, com liberdade de escolher o framewwork que melhor se adapta ao seu negócio. Aliás, o usuário final não se interessa em saber qual o framework utilizado para desenvolver o site, importa apenas as funções disponíveis e a navegabilidade (incluindo a rapidez de atualização). Cabe, portanto, aos desenvolvedores, prover estas características, a partir de abordagens apropriadas, independente do framework escolhido.

6. EXEMPLOS DE CÓDIGO ESCRITO EM RUBY
Para exemplificar, mostraremos abaixo 02 fragmentos de código (classes) escritos em Ruby :

Exemplo 1:

class Integer

def ext
if self == 5
          porExtenso = 'cinco'
else
porExtenso = 'cinqüenta e oito'
end
porExtenso
      end
end

Executando a classe            Resultado
puts 5.ext                       cinco
puts 58.ext                      cinqüenta e oito

Exemplo 2:
class Dado

def rolar
        1 + rand(6)
      end
end

Executando a classe            Resultado
dados = [Dado.new, Dado.new]    5
dados.each do |dado|            3
puts dado.rolar
end

___
³ Exemplos extraídos de: http //aprendaaprogramar.rubyonrails.pro.br/

7. APLICAÇÕES UTILIZANDO RUBY ON RAILS

Atualmente, o Rails está sendo utilizado por várias pessoas e empresas, até mesmo em grandes corporações. Apresentamos abaixo uma pequena amostra das aplicações já desenvolvidas utilizando este framework.

7.1 APLICAÇÕES NACIONAIS

BlogBlogs: Indexação, ranking e busca de blogs brasileiros.
Brasigo: Espaço comunitário de perguntas e respostas.
Pagestacker: Sua memória na Internet.
Ikwa: Conteúdo, serviços e networking para crescimento profissional.
O Curioso: Acompanhe os recados de quem você gosta.
Treina Tom: Transmissão de eventos on-line
VoteBolsa: Troca de opiniões e indicações de compra/venda sobre as empresas listadas na Bolsa de Valores
Mapia: Guia de Bares, Restaurantes, Hotéis

7.2 APLICAÇÕES INTERNACIONAIS

Basecamp: Gerenciamento de projetos (o começo de tudo!).
Campfire: Salas de reunião para negócios.
Twitter: Fique conectado com seus amigos.
GitHub: Hospedagem inteligente de repositórios Git.
Yellow Pages: Ache localmente.
Kongregate: O "YouTube dos games".
Hulu: Canal de TV online, gratuito e legal.
Scribd: Publique documentos de diversos formatos.
SlideShare: Compartilhe apresentações PPT.

8. RUBY ON RAILS X COMPILADORES

Por definição, um compilador é um software que traduz um texto-fonte, escrito em uma linguagem fonte de programação de alto nível; gerando um texto-objeto, escrito em uma linguagem objeto de programação, de baixo ou alto nível, que será posteriormente executada. O Rails não pode ser considerado um compilador, pois o código final gerado (HTML, XML) não será executado, mas interpretado pelo browser. Entretanto, é inegável se tratar de um tradutor, que recebe um texto-fonte de alto nível em Ruby e gera um texto-objeto, ainda de alto nível, em XML (ou outra variação do HTML).

9. CONCLUSÃO

Embora ainda desconhecida pela maioria dos desenvolvedores e até menosprezada pelos que já a conheceram, mas não tiveram o interesse de estudá-la a fundo, a plataforma Ruby on Rails vem ganhando mercado desde o seu surgimento, em 2003. Como pontos a favor desse crescimento podemos citar a orientação a objeto (OO), a aderência a padrões de projeto (como a arquitetura MVC) e o trabalho desenvolvido pela comunidade do código aberto. Entretanto, não podemos negligenciar as dificuldades enfrentadas para sua completa aceitação, dentre as quais podemos citar o fato de ser um framework em amadurecimento, a base instalada de aplicações PHP e Java, a necessidade de aprendizado da linguagem Ruby.

Nos próximos anos, com a migração, em escala geométrica, das aplicações para o ambiente WEB, veremos uma acirrada disputa entre estas opções de desenvolvimento e a abordagem apropriada de cada uma, por parte dos desenvolvedores de soluções, deverá ser decisiva para redefinir os padrões de mercado ou para estabelecer o percentual de participação de cada plataforma.

10. PARA SABER MAIS SOBRE O TEMA

10.1. Links relacionados:
http://rubyonrails.org/ (site oficial)
http://www.rubyonrails.pro.br/ (site oficial – Brasil)
http://aprendaaprogramar.rubyonrails.pro.br/
http://pt.wikipedia.org/wiki/Ruby_on_Rails

10.2. Livros:
Ruby on Rails: Executando (Bruce A. Tate)
Programando Rails: A Bíblia (Obie Fernadez)
Rails para Desenvolvedores Java (Stuart Halloway)
Desenvolvimento Web Ágil com Rails (David Heinemeier Hansson)
Ruby: Investingado a Linguagem (Ivan Jose De Mecenas Silva)
Programming Ruby, The Pragmatic Programmer's Guide (Andrew Hunt e David Thomas

11. DICIONÁRIO DE TERMOS UTILIZADOS

WSDL – O Web Services Definition Language é uma linguagem baseada em XML utilizada para descrever Web Services. Trata-se de um documento XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis.
SOAP – O Simple Object Access Protocol é um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída, utilizando tecnologias baseadas em XML
REST – O Representational State Transfer ou Transferência de Estado Representacional é uma técnica de engenharia de software para sistemas hipermídia distribuídos, como a WEB
MVC (Modelo -Visualização - Controle) – A arquitetura MVC é um padrão de projeto que fornece uma maneira de dividir a funcionalidade envolvida na manutenção e apresentação dos dados de uma aplicação em 03 camadas interdependentes, a saber:

Modelo: Representa os dados da aplicação e as regras do negócio que governam o acesso e a modificação dos dados.

Visualização: Um componente de visualização renderiza o conteúdo de uma parte particular do modelo e encaminha para o controlador as ações do usuário; acessa também os dados do modelo via controlador e define como esses dados devem ser apresentados.

Controle: Um controlador define o comportamento da aplicação, interpretando as ações do usuário e as mapeia para chamadas do modelo. Com base na ação do usuário e no resultado do processamento do modelo, o controlador seleciona uma visualização a ser exibida como parte da resposta.

12. REFERÊNCIAS BIBLIOGRÁFICAS

Porque Ruby on Rails, disponível em: http://imasters.uol.com.br/artigo/4746/programacao/porque_ruby_on_rails/, acessado em 10/04/2009;
Revista INFO Exame, novembro/2008, disponível em: http://info.abril.com.br/professional/desenvolvimento/php-x-ruby-on-rails-quem-vence.shtml, acessado em 09/04/2009;
Arquivo de códigos – Dicas, disponível em:
http://www.arquivodecodigos.net/arquivo/visualizar_dica.php?qual_dica=2296, acessado em 09/04/2009;
WIKIPÉDIA – A enciclopédia livre, disponível em: http://pt.wikipedia.org/wiki/SOAP, acessado em 11/04/2009;
WIKIPÉDIA – A enciclopédia livre, disponível em: http://pt.wikipedia.org/wiki/WSDL, acessado em 11/04/2009;
WIKIPÉDIA – A enciclopédia livre, disponível em: http://pt.wikipedia.org/wiki/REST, acessado em 11/04/2009;

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License