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:
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.1Ok. 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.1Agora 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:
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.
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/controllersE a aplicação Flex em minhaAplicacao/public/sis/clientes.
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
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
Aguarde por alguns segundos até aparecer a mensagem a seguir:
Executando tarefa de compilacao flex_egenial_scaffoldTarefa 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:
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...
Alta propaganda e marketing pessoal. Acredito que o Imasters deva filtrar melhor os seus colunistas. O autor deveria pelo menos ter a humildade de citar as referências para o seu artigo.
Responder comentárioÈ meu amigo carlão, não percamos as esperanças, conforme os ensinamentos, persevera sempre.
Tudo e todos obedecem a lei da evolução porque ela é eterna, cabe a nós outros, apenas confiar que nossos irmãos não tardarão em demasia a despertar uma vez que ser-lhe-á permitido sempre optar entre a grandiosidade ou a mediocridade. O tempo coloca tudo no seu devido lugar.
Há quem segue enciumado e quem faz seguidores. Abraço ao amigo.
Olá vou passar a referência: http://blog.egenial.com.br
Há todos são cópias mesmo, mais cópias do meu própio blog ;-) Fico tentando imaginar como você chegou a esta conclusão que é uma cópia, sendo que eu mesmo que desenvolvi a ferramenta. Mais ta ótimo gosto de ajudar e compartilhar de alguma forma. Abraço
O link para o screencast não entrou na formatação da máteria, pra quem quizer conhecer segue ele: http://www.egenial.com.br/flex_egenial_scaffold/flex_egenial_scaffold.html
Responder comentárioO Artigo é realmente genial, mas aqui nao consegui compilar... olha soh:
Executando tarefa de compilacao flex_egenial_scaffold
clientes
Arquivo encontrado, preparando para a compilacao, aguarde...
Unable to access jarfile C:/FLEX_SDK/lib/mxmlc.jar
Tarefa concluida ;-)
rake aborted!
Houve uma falha na compilacao... msg: 256
(See full trace by running task with --trace)
Carlos, parabens pelo artigo. Vou achar um tempo pra dar atencao a esta integracao do Ruby com o Flex.
Parabens, obrigado e um abraco.
Carlos, considero demais pessoas como você, que dedicam parte do tempo a sistematizar e divulgar conhecimento. Pode ter certeza de que muita gente é grata por isso. Trabalho a praticamente 10 anos na área e nunca publiquei qualquer artigo, talvez por não me achar competente para tal ou por não me esforçar para arrumar um tempinho. Porém jamais escrevi para criticar a iniciativa, esforço e coragem dos que dividem o conhecimento que têm, por menor que seja é sempre útil a alguém. Por isso espero que pessoas como o Charles também compartilhem seu conhecimento ao invés de só meter a boca. Grande abraço e obrigado.
Responder comentáriomeus parabens caro amigo Carlos, excelentes artigos os seus, li todos sobre ruby* e testei e são de primeira qualidade.. aguardo os futuros! abracos
Responder comentárioParabéns pela iniciativa. Tudo o que pesquiso a respeito de flex & ruby só dá vc nas pesquisas!
De todos os seus tutoriais esse foi o unico que deu um probleminha.
"Couldn't find 'flex_egenial_scaffold' generator"
Consegui resolver os problemas :)
Responder comentárioUnable to access jarfile C:/Arquivos_de_Programa/Adobe/Flex_Builder_2/FLEX_SDK_2/lib/mxmlc.jar Tarefa concluida ;-) rake aborted! Houve uma falha na compilacao... msg: 256 (See full trace by running task with --trace)
alguém por favor pode me ajudar?
aqui esta dando este erro no route found to match "/sis/clientes" with {:method=>:get} alguem pode me ajudar ?
Ola, Antonio...
Estou tendo esse mesmo problema!"no route found to match "/sis/clientes" with {:method=>:get}"
Gostaria de saber se ja consegiu solucionar?
abs
Vi que algumas pessoas tb. tiveram o mesmo problema abaixo. Aguém conseguiu solucionar????
Executando tarefa de compilacao flex_egenial_scaffold
clientes
Arquivo encontrado, preparando para a compilacao, aguarde...
Unable to access jarfile E:Flex_SDK_2/lib/mxmlc.jar
Tarefa concluida ;-)
rake aborted!
Houve uma falha na compilacao... msg: 256
(See full trace by running task with --trace)
Ao comfigurar o arquivo comp.rake note que a barra que indica o caminho de instalação é diferente da usual. Ex.:
E:/Flex_SDK_2
Olá Carlos, parabéns pela matéria e por estar ajudando o pessoal, estou achando muito show essas facilidades na programação.
Responder comentárioEstou com erro quando executo: Ruby script/generate flex_egenial_scaffold cliente.
Ocorre o erro abaixo:
uninitialized constant ScaffoldingSandbox.
Alguém pode me ajudar ?
Chará... com certeza deve estar usando as versões RUBY 186 e RAIL 2!!! Eu testei com essas versões e ocorreu o erro q esta comentando...! Agora com a versão RUBY 184 e RAILS 12 ja roda perfeitinho! Resumindo, deve ser "MAIS" uma incompatibilidade dessas versões!
abs
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Carlos Eduardo é um grande entusiasta de linguagens que provêem produtividade aliada a diversão. Trabalha com informática há 7 anos, e como desenvolvedor há 4 anos. Hoje é proprietário da e-Genial Soluções Inteligentes, empresa dinâmica que provê Soluções em desenvolvimento Web. Ministra treinamentos de desenvolvimento web em plataformas Jee e Ruby on Rails para empresas e orgãos públicos.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.