Back-End

26 jan, 2007

Flex e-Genial Scaffold

Publicidade

Olá pessoal. Já começamos o ano com muita coisa boa acontecendo. David acaba de lançar o Ruby on Rails 1.2 com muita novidade e uma delas é o RestFull, que torna mais fácil integrar aplicações Ruby on Rails com aplicações externas. Imagine em uma única url sua aplicação fornecer serviços como RSS, WebService e conteúdo dinâmico mudando somente a extensão. Esta é uma das funcionalidades que vai estremecer o desenvolvimento web.

Acaba de sair do forno também o Flex 2.0.1 com algumas melhorias significativas que com certeza vai fazer a diferença na hora de desenvolver aplicações RIA corporativas, abaixo segue as grandes mudanças:

  1. Suporte ao MAC OSX;
  2. SDK Ganhou um pacote a mais o mx.modules;
  3. CSS em tempo de execução;
  4. asDoc como parte do Flex Builder;
  5. Rendenização de textos;
  6. 290 Bugs corrigidos;
  7. Flex Builder baseado agora no Eclipse 3.2 e com maior performance;
  8. Suporte para o “Apollo”. Se não conhece ainda o Apollo procure conhecer, você irá entender de que forma aplicações web´s irão revolucionar as experiências e usabilidade dos usuários finais.

E como não posso ficar de fora dessas grandes mudanças e sempre focado em colaborar com a comunidade Brasileira, resolvi atacar de generators. É…generators mesmo. Você deve estar se perguntando o que é isso, come com pão francês? Ou com bolachinha salgada? É mais que isso!

Um dos conceitos de desenvolvimento Ruby on Rails é automatizar tarefas repetitivas. Desta forma, existem vários plugins e geradores de códigos que vão te ajudar no dia a dia. Em sua estrutura interna, o Rails possui um generator chamado Scaffold, e a idéia básica é que a partir de uma tabela existente no banco de dados, com o simples comando script/generate scaffold Tabela (singular), ele crie automaticamente uma tela com o form para cadastrar, editar, deletar e listar os dados desta tabela, assim automatizando as tarefas.

Eu sou um cara que gosto de automatizar tarefas repetitivas, e usufruindo deste tipo de recurso resolvi então criar o Flex e-Genial Scaffold. O FES é um generator que tem por objetivo automatizar tais tarefas para a criação de aplicações RIA, unindo Ruby on Rails com Flex 2, e, seguindo a mesma linha do Scaffold original do Rails, porém com a view em Flex. O projeto está hospedado no RubyForge sobe a licença MIT, assim você pode baixar usar, distribuir, vender e até dar de presente para seu tio favorito.

Neste artigo você irá aprender a instalar e a criar uma breve aplicação usando o FES. Você verá como é fácil ganhar tempo eliminando as tarefas corriqueiras.

O primeiro passo agora é instalar o flex_egenial_scaffold. Como já expliquei em outras matérias, o Ruby tem um recurso que simplesmente faz a diferença: é o GEM. Com ele é possível instalar plugins, generators, aplicações e bibliotecas que vão ajudar no dia dia. Presumo que você já tenha instalado o Ruby e o Rails, certo? Caso ainda não, procure aqui mesmo no site como deixar tudo preparado para criar aplicações com alguns passes de mágicas.

Ok. Então abra o terminal ou o cmd do windows e digite o seguinte comando.

Gem install flex_egenial_scaffold_generator

Aguarde alguns segundos até aparecer a mensagem a seguir:

Successfully installed flex_egenial_scaffold_generator-0.0.1

Ok. Agora o FES foi instalado com sucesso. Se tiver interesse em aprender como funciona o generator, no Windows a instalação do FES fica em:

C:\ruby\lib\ruby\gems\1.8\gems\flex_egenial_scaffold_generator-0.0.1

Agora estamos prontos para criar nossa primeira aplicação com uma simples tela que vai cadastrar, atualizar, deletar e listar os dados de uma tabela.

Antes de tudo, crie um banco de dados. Neste exemplo, vamos utilizar o MySQL. Crie um banco chamado “flexrailsdb” e em seguida adicione uma tabela chamada “Clientes” com os seguintes campos: id, nome, email1, email2, observacacao e numero_banco.

Então temos agora essa estrutura:

  • Banco de dados: flexrailsdb
  • Tabela 1: clientes
  • Campos da tabela clientes:
  • Id : Int
  • Nome: Varchar
  • Email1: Varchar
  • Email2: Varchar
  • Observação: Text
  • Numero_banco: Varchar

Depois de criado o banco e sua estrutura, ainda com o cmd aberto vá até c:\, cd c:\. Ou, se você estiver no Linux, cd \home\seuUsuario.

Digite o seguinte comando:

Rails minhaAplicacao

Espere criar todo o esqueleto da aplicação. Em seguida digite:

cd minhaAplicacao

Edite o arquivo database.yml que está dentro de minhaAplicacao/config. Adicione os dados de comunicação com o banco.

  • development:
  • adapter: mysql
  • database: flexrailsdb
  • username: root
  • password:

  • host: localhost

No terminal, vamos fazer uma mágica. Digite:

Usuário Windows:

Ruby script/generate flex_egenial_scaffold cliente

Usuário Linux

script/generate flex_egenial_scaffold cliente

Observação: Rails trabalha com pluralização, então a idéia é sempre usar tabela no plural e model no singular, que foi o nosso caso. Tabela clientes (plural), model no singular.

O FES criou automaticamente o model, o controller e o fonte MXML da aplicação Clientes. Na seguinte estrutura de diretórios:

minhaAplicacao/app/controllers

  • clientes_controller.rb

minhaAplicacao/app/models

  • cliente.rb

E a aplicação Flex em minhaAplicacao/public/sis/clientes.

  • _listaGrid.mxml
  • clientes.mxml

Estes são os arquivos fundamentais da aplicação clientes.

Agora que já estamos com a estrutura da nossa aplicação, precisamos então compilar o fonte clientes.mxml para criar o bytecode clientes.swf que será o front-end da tela de clientes.

Primeiro vamos realizar duas pequenas “mudanças”!

Dentro da pasta minhaAplicacao/lib/tasks, existe um arquivo chamado comp.rake. É ele o responsável por chamar o compilador do Flex SDK e gerar o bytecode. Então edite este arquivo e altere o caminho:

home = "F:/FAMILIA_ADOBE/FLEX_SDK_2"

Este é o caminho onde esta instalado o seu Flex SDK. Se você não tem ainda o Flex SDK instalado, veja a matéria de como realizar esta instalação passo a passo .

É fundamental extrair os arquivos em uma pasta de fácil acesso e que não tenha espaços no nome. Sugestão: c:\flex_sdk. Use um “_” no lugar dos espaços, pois assim fica fácil para a tarefa comp encontrar o compilador Flex.

O próximo passo é editar o arquivo flex-config.xml que está dentro da pasta Caminho/de/onde/esta/a/instalação/do/Flex/SDK/frameworks.

Encontre a linha:

<!-- File containing cached system font licensing information 

produced via
java -cp mxmlc.jar flex2.tools.FontsSnapshot (fontpath)
Will default to winFonts.ser on Windows XP and
macFonts.ser on Mac OS X, so is commented out by default.

<local-fonts-snapshot>localFonts.ser</local-fonts-snapshot> -->

Retire a seguinte linha de dentro dos comentários

localFonts.ser

Ficando assim:

<!-- File containing cached system font licensing information 

produced via
java -cp mxmlc.jar flex2.tools.FontsSnapshot (fontpath)
Will default to winFonts.ser on Windows XP and
macFonts.ser on Mac OS X, so is commented out by default.
-->

<local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>

Agora, como já temos configurado o caminho do Flex SDK e as fontes, é hora de compilar. Logo, ainda no terminal, digite:

rake comp:flex arq=clientes

  • rake: É o programa responsável por executar uma tarefa;
  • comp: É o nome da nossa tarefa;
  • flex: É o namespace da tarefa;
  • arq=: É o nome da tabela/arquivo/fonte/mxml criado.

Aguarde por alguns segundos até aparecer a mensagem a seguir:

Executando tarefa de compilacao flex_egenial_scaffold

Tarefa concluída!

Você irá perceber que, dentro da pasta minhaAplicacao/public/sis/clientes, existe um arquivo chamado clientes.swf que é o bytecode gerado pelo compilador flex.

Vamos testar! Levante o servidor da aplicação com o seguinte comando:

Usuários Windows:

Ruby script/server

Usuário Linux:

Script/server

Aguarde até aparecer a mensagem a seguir:

C:\minhaAplicacao>ruby script/server|

=> Booting WEBrick… |

=> Rails application started on http://0.0.0.0:3000 |

=> Ctrl-C to shutdown server; call with –help for options |

[2007-01-21 12:58:17] INFO WEBrick 1.3.1 |

[2007-01-21 12:58:17] INFO ruby 1.8.4 (2006-04-14) [i386-mswin32] |

[2007-01-21 12:58:17] INFO WEBrick::HTTPServer#start: pid=2220 port=3000 |

Abra o seu browser preferido e digite http://localhost:3000/sis/clientes/.

Você deverá ver a tela abaixo:

Caso não veja, repita os passos acima.

Agora você poderá cadastrar os dados. Para editar ou deletar um registro, clique na linha correspondente listada na grid.

Viu como é simples e fácil integrar e criar aplicações Ruby on Rails com Flex 2? Agora te convido a assistir esse screencast que criei onde tem um passo a passo de como criar uma aplicação Rails usando o RadRails com o Flex e-Genial Scaffold.

Experimente também adicionar mais um campo da tabela clientes e em seguida, rodar:

  1. Ruby script/generate flex_egenial_scaffold cliente
  2. rake comp:flex arq=clientes

Em seguida dê um refresh na página e veja o que acontece.

Mude a ordem das colunas da tabela clientes e rode novamente os passos acima. Veja como o FES se comporta.

Bom, eu espero que tenham gostado. Qualquer dúvida só me enviar um e-mail, grande abraço e até a próxima…