quarta-feira, 27 de novembro de 2013

RUBY ON RAILS 1


RUBY ON RAILS

                                       
Ruby on Rails, muitas vezes simplesmente Rails, é um framework de aplicação web de código aberto que funciona na linguagem de programação Ruby. É um framework full-stack (pilha completa): permite a criação de páginas e aplicações que reúnem informações do servidor web, conversar ou consultar o banco de dados, e renderizar1 modelos externos. Como resultado, o Rails possui um sistema de roteamento que é independente do servidor web. 

O termo "renderizar 1" (to render) é usado na computação gráfica, significando converter uma série de símbolos gráficos num arquivo visual, ou seja, "fixar" as imagens num vídeo, convertendo-as de um tipo de arquivo para outro, ou ainda "traduzir" de uma linguagem para outra.

Ruby on Rails enfatiza o uso de padrões de engenharia de software bem conhecidos e princípios, como:

  • o padrão Active Record 2
  • convenção sobre configuração3 (CoC), 
  • não repita a si mesmo4 (DRY), e 
  • model-view-controller5 (MVC).
Active Record Pattern 2 padrão de registro ativo, um padrão de arquitetura de armazenamento de dados em bancos de dados relacionais, uma abordagem para o acesso a dados.

A interface de um objeto de acordo com esse padrão deve incluir funções como Insert, Update e Delete, além de propriedades que correspondem à colunas na tabela subjacente.

Uma tabela ou 'view' estão empacotados em uma classe. Assim, uma instância de objeto está vinculado a uma única linha na tabela. Após a criação de um objeto, uma nova linha é adicionada à tabela após salvar.

 Qualquer objeto carregado obtém suas informações a partir do banco de dados. Quando um objeto é atualizado a linha correspondente na tabela também é atualizada.

 A classe wrapper implementa métodos de acesso ou propriedades para cada coluna na tabela ou 'view'.

qualquer = new Classe_Qualquer()
qualquer.nome = "Exemplo qualquer"
qualquer.valor = 123.45
qualquer.salvar()
SQL : INSERT INTO quaisquer (nome, valor) VALUES ('Exemplo qualquer', 123.45);

b = qualquer.find_first("nome", "caixa")
SQL: SELECT * FROM quaisquer WHERE nome = 'caixa' LIMIT 1; -- MySQL ou PostgreSQL

Convenção sobre configuração 3 (também conhecido como codificação por convenção) é um paradigma de design de software, que visa diminuir o número de decisões que os desenvolvedores precisam fazer, ganhando simplicidade, mas não necessariamente perder a flexibilidade.

O desenvolvedor precisa apenas especificar aspectos não convencionais da aplicação. Por exemplo, se houver uma classe venda no modelo, a tabela correspondente no banco de dados é chamado de "vendas" por padrão. É só se desvia desta convenção, como chamar uma tabela de "produtos_vendido", que necessitará alguém escrever o código adicional em relação a estes nomes.

Quando a convenção implementada pela ferramenta corresponde ao comportamento desejado, ele se comporta como esperado, sem ter que escrever arquivos de configuração. Somente quando o comportamento desejado se desvia da convenção implementada é necessário configuração explícita.


Don't Repeat YourSelf 4  não repita a si mesmo (DRY) é um princípio de desenvolvimento de software que visa reduzir a repetição de informações de todos os tipos, especialmente úteis em arquiteturas multi-tier. O princípio indica que "cada parte da informação deve ter uma única, inequívoca e, autoritária representação dentro de um sistema . " 

Eles aplicam isto de forma bastante ampla para incluir esquemas de banco de dados, planos de teste, sistema de compilação , e até mesmo documentação.

Quando o princípio DRY é aplicado com sucesso, uma modificação de qualquer elemento individual de um sistema não requer uma mudança em outros elementos não relacionados logicamente

Além disso, elementos que estão relacionados logicamente são todos alterados previsível e uniformemente, e assim mantidos em sincronia.

 É o conceito por trás da técnica de definir nomes, propriedades e códigos em somente um lugar e reaproveitar essas informações em outros. Por exemplo, ao invés de ter uma tabela Pessoas e uma classe Pessoa, com uma propriedade, um método "leitor" (getter) e um "modificador" (setter) para cada campo na tabela, tem-se apenas no banco de dados. As propriedades e métodos necessários são "injetados" na classe através de funcionalidades da linguagem Ruby.
Com isso, economiza-se tempo, já que não é necessário alterar a tabela, o "bean", o "form bean", o "local home", o "home", o "session", ... Alterando apenas no banco de dados, tudo o que se baseia nessas informações é atualizado automaticamente.

Componentes

Rails é um "meta-framework" (framework que utiliza dados de outro framework)composto pelos seguintes frameworks:
  • Active Record é uma camada de mapeamento objeto-relacional (object-relational mapping layer), responsável pela interoperabilidade entre a aplicação e o banco de dados e pela abstração dos dados.
  • Action Pack compreende o Action View (geração de visualização de usuário, como HTMLXMLJavaScript, entre outros) e o Action Controller (controle de fluxo de negócio).
  • O Action Mailer é um framework responsável pelo serviço de entrega e até mesmo de recebimento de e-mails. É relativamente pequeno e simples, porém poderoso e capaz de realizar diversas operações apenas com chamadas de entrega de correspondência.
  • 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.

Escalabilidade (que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer)
A maioria dos sites não necessita de esquemas sofisticados de escalabilidade, bastando alguns aceleradores. Em sites menores ou normais, uma configuração padrão do servidor web consegue suportar uma boa quantidade de carga, principalmente se forem usados o FastCGILightTPD ou Mongrel, que são necessários para obter uma velocidade aceitável de abertura da página. 
Comparando uma aplicação com FastCGI e sem FastCGI (rodando Ruby direto como CGI), a diferença é perceptível em qualquer aplicação. O processamento do código (sem contar o tempo de download) em CGI ocorre em no mínimo 10 segundos mesmo em servidores Quad Core, enquanto que em FastCGI o desempenho é notável: em no máximo 1 segundo a página é processada, tal qual linguagens web como PHP.
Existem casos de sites feitos em Rails que suportaram 5 milhões de visitas em um mês, ou seja, aproximadamente 115 por minuto, uma performance considerada suficiente para 90% das aplicações atuais. Nestes sites, uma questão frequente é sobre a escalabilidade de aplicações escritas em Rails
Ao contrário de outras tecnologias, você não precisa fazer um código específico para que o sistema esteja preparado para "escalar". Quando necessário pode-se adotar uma das táticas disponíveis para escalabilidade em Rails. 
Vale notar que o único problema da escalabilidade é a manutenção de sessões entre servidores. Portanto, a saída mais óbvia é guardar estas sessões em volumes NFS, acessíveis por todos os servidores de aplicação. Outra tática é usar o armazenamento de sessões diretamente no banco de dados. Uma terceira, seria salvar a sessão em um cookie na máquina do usuário.


Nenhum comentário:

Postar um comentário