Monografia: GEtna – Gerador Ruby On Rails a Partir de banco de Dados

Posted by Luiz Carvalho | Posted in Dicas, Projetos | Posted on 18-09-2009-05-2008

0

Bom galera já estava em tempo de compatilhar minha monografia, de tempos em tempos a galera pedia para enviar, então nada mais justo (e fácil) que por ela aqui no blog.


UNIVERSIDADE FEDERAL DO TOCANTINS
CAMPUS UNIVERSITÁRIO DE PALMAS
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

GETNA: GERADOR DE CÓDIGO RUBY ON RAILS
A PARTIR DE BANCO DE DADOS

Palmas
2008
LUIZ ARÃO ARAÚJO CARVALHO

Resumo
Na literatura, existem vários geradores de código disponíveis que tem como
principal propósito automatizar o processo de desenvolvimento de aplicações em
diversas linguagens de programação. Este trabalho apresenta o desenvolvimento
de um gerador de código, denominado GEtna, com a função de criar as classes a
partir de um determinado banco de dados. Vale a pena ressaltar que o gerador
GEtna difere dos existentes pelas suas funcionalidades disponibilizadas.
O gerador proposto aumenta a velocidade do processo de desenvolvimento
de uma aplicação Rails, pois recebe como entrada tabelas de um banco de dados
relacional (MySQL, PostgreSQL ou SQLite) e fornece como saída toda a estrutura
de arquivos (classes). Vale a pena ressaltar que o GEtna proporciona uma
padronização das classes geradas e, conseqüentemente, sustenta sua legibilidade,
que é um fator muito importante quando se trabalha com equipes de
desenvolvedores. Assim, neste trabalho será apresentada uma descrição sobre
geradores de código, padrões de projeto, métodos de mapeamento e definições de
dados que são fundamentais para o desenvolvimento de um gerador de código.

Palavras-chave: Banco de Dados Relacional, Desenvolvimento de Sistema,
Gerador de Código, Rails.

ABSTRACT

In literature, there are several available code generators that have the main
goal to automatize the application development process for some programming
languages. This work presents the development of a code generator, named GEtna,
that creates classes from a specific database. It’s important to note that GEtna
generator differs of other generators by your available functionalities.
The proposed generator increases the velocity of a Rails application
development process because it receives as input relational database tables
(MySQL, PostgreSQL or SQLite), and provides as output the complete file structure
(class). The GEtna provides a padronization of generated classes and,
consequently, maintains the legibility that is a very important factor when there are
developers’ groups. So, in this work a description about code generators, design
patterns, mapping methods and data definition is presented because they are
essential for a code generator development.

Keywords: Relational Database, System Development, Code Generator, Rails.


Não, não eu não vou Copiar a Monografia toda aqui não, em baixo eu exportei em diversos formatos para que seja aberto não importa a situação. Coloquei também o Original podendo ser usado como Modelo para você redigir sua monografia no padrão usado pela UFT.  Só lembrando consegui um 10 com essa monografia então cuidem muito bem dela.

Original(DocX)

Pdf

Txt

Html

Doc

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Problemas ao instalar o ruby-debug-ide para o Netbeans

Posted by Luiz Carvalho | Posted in Artigos, Dicas, Linux | Posted on 06-07-2009-05-2008

0

A alguns meses atrás tive problema em instalar o ruby-debug, resolvido apenas instalando o build-essencial e o ruby1.8-dev. Melhor esplicado no outro post

Outro problema comum é na instalação do ruby-debug-ide também facilmente resolvível basta instalar a versão certa da gem, ou seja, a versão 0.3.x(0/1/2/3/4) que é a versão aceita no Netbeans 6.X até onde eu testei.

Quando tentei instalar a gem pela linha de comando

[source lang="ruby"]
sudo gem install ruby-debug-ide -v=0.3.4
[/source]
por exemplo, a gem não é encontrada então o negocio é baixar no braço e instalar.

Você pode instalar do repositório ou diretamente no nosso site a versão usual mais recente (Clicando aqui).

E executando
[source lang="ruby"]
sudo gem install ruby-debug-ide-0.3.4.gem
[/source]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Pacote de Posts sobre Programação 1

Posted by Luiz Carvalho | Posted in Artigos | Posted on 03-06-2009-05-2008

0

Na falta de tempo para fazer um post, mesmo tendo dezenas de ideias vo fazer uma restrospectiva rápida de alguns posts que eu mais gostei de fazer! =)

Ainda tenho muitas ideias a por em prática. mas vamos por partes

abraço!

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Utilizando JQuery no Rails com JRails

Posted by Luiz Carvalho | Posted in Tutoriais | Posted on 12-05-2009-05-2008

0

Bom, faz tempo que eu não coloco um Tutorial aqui e como vou passar ou já pessei esse conteúdo no mini-curso de Rails. aproveitei e vou postar aqui também.

1. Instalação

Console

./script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails

No NetBeans

Clique com o direito em seu projeto e vá em PLUG-INS RAILS, irá aparecer uma janela onde você clicará em REPOSITÓRIOS e no botão ADICIONAR URL. então você introduz a url do repositório:

http://ennerchi.googlecode.com/svn/trunk/plugins/

01 -Install_Jquery

Agora vá para a aba NOVOS PLUGINS encontre o JRAILS, o selecione e aperte no botão INSTALAR.

02 -Install_Jquery1

Após instalado feche a janela. uma pasta chamada jrails será criada na pasta Fornecedor(Vendor)/plugins

03 -Install_Jquery03

2. Configuração

Vamos então chamar os respectivos Js’s para nossa aplicação, para isso basta apenas inclur a seguinte tag(se ela já não existir) entre as TAGS<head> do seu APPLICATION.HTML.ERB.

<%= javascript_include_tag :defaults  %>
04 -Install_Jquery03

Vamos ver se tudo ocorreu corretamente. inicie a aplicação e observe o conteúdo da TAG<head>, se os arquivos jquery.js, jquery-ui.js, jrails.js foram carregados tudo está OK!

04 -Install_Jquery04

Então pode-se deletar os arquivos do prototipe =D

05 -Install_Jquery03

3. Utilização

Vamos fazer um coisinha simples, apenas pra testar nosso plugin. vamos criar um link para lugar nenhum que ao ser clicado ele mostrar os campos do formulário. que prefiamente vamos prepara-lo.

Primeiro vamos criar uma DIV entre os campos do formulário e como atributos dessa DIV um “ID=formulario” que vamos manipular e um STYLE=”display:none” assim fazendo com que esses campos começem ocultos.

bom vai ficar mais ou menos assim:

06 -Install_Jquery03

Pronto, se tudo ocorreu bem! seu formulario vai aparecer com um delay de 0.6 segundo definidos pelo 600 dentro do parametro SHOW.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Flexões de nomes com Ruby On Rails

Posted by Luiz Carvalho | Posted in Dicas | Posted on 08-05-2009-05-2008

0

As vezes temos necessidade (ou preferência ) em criar aplicações Ruby On Rails com palavras em nosso idioma, isso pode ocasionar alguns problemas ao tentar pluralizar ou singularizar essas palavras. Por exemplo:

[source language="ruby"]
"permissao".pluralize
= "permissaos" 	#E também
"permissoes".singularize
= "permisso"          [/source]

A Para resolver esse problema basta criar regras no arquivo inflections.rb de modo a pluralizar esse tipo de “irregularidade” de modo correto. Bom isso seria muito trabalhoso se já não tivessem feito um arquivo bem completinho que eu vou disponibilizar aqui pra vocês.

[source language="ruby"]
Inflector.inflections do |inflect|
inflect.clear

#general rule: add "s" to the end of the word
#casa - casas
inflect.plural /^([a-zA-z]*)a$/i, '1as'
#pe - pes
inflect.plural /^([a-zA-z]*)e$/i, '1es'
#no example
inflect.plural /^([a-zA-z]*)i$/i, '1is'
#carro - carros
inflect.plural /^([a-zA-z]*)o$/i, '1os'
#pneu - pneus
inflect.plural /^([a-zA-z]*)u$/i, '1us'

#if word ends in "r" or "z", add "es"
#luz - luzes
#flor - flores
#arroz - arrozes
inflect.plural /^([a-zA-z]*)r$/i, '1res'
inflect.plural /^([a-zA-z]*)z$/i, '1zes'

#if word ends in "al", "el", "ol", "ul": trade "l" with "is"
#farol - farois
#hospital - hospitais
#telemovel - telemoveis
#pincel - pinceis
#anzol - anzois
inflect.plural /^([a-zA-z]*)al$/i, '1ais'
inflect.plural /^([a-zA-z]*)el$/i, '1eis'
inflect.plural /^([a-zA-z]*)ol$/i, '1ois'
inflect.plural /^([a-zA-z]*)ul$/i, '1uis'

#if word ends in "il" and has tónic accent in last syllable, trade "il" with "is"
#cantil - cantis
inflect.plural /^([a-zA-z]*)il$/i, '1is'

#TODO
#if word ends in "il" and has tónic accent in penultimate syllable, trade "il" with "eis"
#no example

#if word ends in "m", trade "m" with "ns"
#armazem - armazens
#portagem - portagens
inflect.plural /^([a-zA-z]*)m$/i, '1ns'

#TODO
#if word ends in "s" and has one silable, trade "s" with "es"
#no example
#inflect.plural /^([a-zA-z]*)e$/i, '1es'

#TODO
#if word ends in "x" stays the same
#no example... professor X, maybe?
#inflect.plural /^([a-zA-z]*)x$/i, '1xes'

#if word ends in "ão", there are three ways of plural: ãos, ães, ões
#NOTE: hard to detect, so I'll use the most common case
#and then use irregular cases for the others.  if someone knows of
#more cases please add to the list &amp;amp;amp; mail me. thanks!
#
#cão - cães
#colchão - colchões
#portão - portões
#pão - pães
#alemão - alemães
#chão - ?
#pilhão - pilhões
#canhão - canhões
#bidão - bidões
#mão - mãos
inflect.plural /^([a-zA-z]*)ao$/i, '1oes'
# inflect.irregular 'cao', 'caes'
# inflect.irregular 'pao', 'paes'
#inflect.irregular 'mao', 'maos'
#inflect.irregular 'alemao', 'alemaes'

############################
#singularize rules         #
############################

#pes - pe
#carros - carro
#pneus - pneu
inflect.singular /^([a-zA-z]*)as$/i, '1a'
inflect.singular /^([a-zA-z]*)es$/i, '1e'
inflect.singular /^([a-zA-z]*)is$/i, '1i'
inflect.singular /^([a-zA-z]*)os$/i, '1o'
inflect.singular /^([a-zA-z]*)us$/i, '1u'

#luzes - luz
#flores - flor
#arrozes - arroz
inflect.singular /^([a-zA-z]*)res$/i, '1r'
inflect.singular /^([a-zA-z]*)zes$/i, '1z'

#cantis - cantil
inflect.singular /^([a-zA-z]*)is$/i, '1il'

#farois - farol
#hospitais - hospital
#telemoveis - telemovel
#pinceis - pincel
#anzois - anzol
inflect.singular /^([a-zA-z]*)ais$/i, '1al'
inflect.singular /^([a-zA-z]*)eis$/i, '1el'
inflect.singular /^([a-zA-z]*)ois$/i, '1ol'
inflect.singular /^([a-zA-z]*)uis$/i, '1ul'

#armazens - armazem
#portagens - portagem
inflect.singular /^([a-zA-z]*)ns$/i, '1m'

#cães - cão
#colchões - colchão
#portões - portão
#pães - pão
#alemães - alemão
inflect.singular /^([a-zA-z]*)oes$/i, '1ao'
inflect.singular /^([a-zA-z]*)aes$/i, '1ao'
inflect.singular /^([a-zA-z]*)aos$/i, '1ao'

# inflect.plural /^(ox)$/i, '1en'
# inflect.singular /^(ox)en/i, '1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )

inflect.irregular 'alias', 'aliases' #Melhor entendido se continuar com a regra do inglês
inflect.irregular 'mailbox', 'mailboxes' #Melhor entendido se continuar com a regra do inglês
end

[/source]
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Mini-Curso: Desenvolvimento Ágil com RubyOnRails

Posted by Luiz Carvalho | Posted in Artigos | Posted on 17-04-2009-05-2008

0


darx

Nesse post estão arquivos que serão utilizados no Mini-Curso de Ruby On Rails:

Aulas 01 e 02

Aulas 03

  • Desenvolvimento Ágil com Rails – Apresentação de Slides Parte II
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Mudanças nos Dias do Mini-Curso de Ruby On Rails

Posted by Luiz Carvalho | Posted in Uncategorized | Posted on 24-03-2009-05-2008

0

 

Mini-curso de Desenvolvimento Ágil com Ruby On Rails 
 

HORÁRIO E LOCAL DE AULAS: 

Aula Dia Horário Local
Aula 1 Sexta (03/04) 14:00 – 17:40 Labin 10
Aula 2 Sábado (04/04) 14:00 – 17:40 Labin 10
Aula 3 Sexta (17/04) 14:00 – 17:40 Labin 10
Aula 4 Sábado (18/04) 14:00 – 17:40 Labin 10
Aula 5 Sábado (25/04) 14:00 – 17:40 Labin 10
Aula 6 Sexta (08/05) 14:00 – 17:40 Labin 10
Aula 7 Sábado (09/05) 14:00 – 17:40 Labin 10
Aula 8 Sexta (15/05) 14:00 – 17:40 Labin 10

 
 
DAS VAGAS: 

22 vagas em máquinas do Laboratório 10;

02 vagas para alunos que utilizem Notebook; 

DOS PRÉ-REQUISITOS:  

- Noções de programação orientada a objetos; conhecimentos básicos em desenvolvimento web; 

DAS INSCRIÇÕESaté o dia 02 de Abril 

- Obtenha o formulário de inscrição com qualquer membro da Diretoria, preencha-o, anexe-o com o Comprovante de Pagamento e entregue ao aluno João André Prudêncio da Silva. 

TAXA DE INSCRIÇÃO: R$ 10,00 

IMPORTANTE: O pagamento da taxa de inscrição deverá ser feita através de Transferência Eletrônica ou Depósito em conta. Não serão aceitos comprovantes de depósito feito em caixa eletrônico ou dinheiro em espécie. 
 

Banco do Brasil – Conta Corrente

Favorecido: Centro Acadêmico de Ciência da Computação da Univ Fed To

Agência: 1505-9    Conta: 44955-5 

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Inscrições para o Mini-curso de Ruby On Rails começa nesta terça-feira

Posted by Luiz Carvalho | Posted in Noticias | Posted on 23-03-2009-05-2008

0

A Direção de Ensino, Pesquisa e Extensão do CACCOMP abre nesta terça-feira as inscrições para o Mini-curso do Centro Acadêmico de Desenvolvimento Ágil com Ruby On Rails. O recém graduado em Ciência da Computação pela UFT, Luis Arão, será o ministrante do curso de extensão.

Serão disponibilizadas cerca de 22 vagas. Haverá expedição de certificados aos cursistas, já que o projeto será apresentado no Colegiado para aprovação e cadastro junto à Pró-reitoria de Extensão, responsável pela certificação.

Os pré-requisitos são noções de programação orientada a objetos e conhecimentos básicos em desenvolvimento web.

As aulas terão início no dia 03 de Abril. A carga horária do mini-curso será de 24 horas ao todo. Serão 8 encontros de 3 horas, que ocorrerão no turno vespertino (14h às 17h) das sextas e sábados do mês de Abril, com excessão do dia 24, que haverá o I Encontro de Desenvolvedores de Jogos do Tocantins. A aula deste dia será adiantada para o dia 23 (quinta-feira).

As inscrições serão ao valor de R$ 10,00. O pagamento deverá ser efetuado através de depósito em conta ou por transferência bancária. Segue, ao final da matéria, os dados para pagamento.

Para se inscrever, obtenha o formulário de inscrição com os membros da Diretoria, entregue-o preenchido e com o comprovante de pagamento anexado. Não serão aceitos comprovantes de depósito em caixa eletrônico.

Para maiores informações, baixe (esteja logado) a ementa e o arquivo de divulgação do Mini-curso. Sobre o Programa de Mini-curso do Centro Acadêmico, clique aqui .

BANCO DO BRASIL – CONTA CORRENTE

FAVORECIDO: Centro Acadêmico de Ciência da Computação da Uni Fed To

Agência: 1505-9    Conta:   44955-5

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

GEtna: Gerador Funcinal

Posted by Luiz Carvalho | Posted in Noticias | Posted on 02-11-2008-05-2008

1

Galera o GEtna está em sua reta final para lançamento do Betha =D
acabei de fazer o modulo que cuida dos relacionamentos Nx1, então temo:

  • Geração de Controllers, Models e Views
  • Geração Customizada de Layouts (Disponíveis os temas default, depot e rails )
  • Geração de relacionamentos NxN e Nx1 no Modelo e funcionalidade aplicada a View
  • Helpers
  • Tests
  • Routes

Próximo passo:

  • Geração de Validações
  • Geração de Migrações

Foram feitos testes com até 1500 tabelas, nos bancos Postgres, Mysql e SQLite e nos sistemas Operacionais Linux(ubuntu) e Windows(XP).

Agora preciso da ajuda de vocês, não tenho Mac e nunca mexi em outro bancos a não ser esses três. então quem puder testar no Mac e em outro banco de dados e se possivel mandar um ScreenShot pra mim pra colocar na Monografia seria de grandississima ajuda.

OBS: O Gerador é escrito em Ruby e utilizando ActiveRecord, então isso tudo devia funcionar sem problemas, mas preciso testar no maximo de ambientes e situações possiveis para ter certeza.

Falando em Ajuda, gostaria de Agradecer a garela da Rails-Br, Cairo Noleto,Leandro Camargo, Felipe Diesel, Silvio Fernandes entre outros.

para quem quiser testar o Plugin (ainda em desenvolvimento)

http://github.com/LuizCarvalho/getna/tree/master

Abraços.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter

Problemas ao instalar Fast-Debuger (ruby-debug)

Posted by Luiz Carvalho | Posted in Dicas | Posted on 27-10-2008-05-2008

2

Sempre tiver bastante problemas com essa GEM, mas por besteira minha mesmo, alguem pode cair nessa besteira também por isso vou compartilhar =)

Não me recordo do primeiro erro, mas bastou instalar o build-essencial (no Ubuntu) para tudo funcionar, para seu S.O. é instalar o pacote de compilação padrão.

Mesmo assim gerou esse segundo erro.

[source language='cpp']
maxprox@maxprox-desktop:~$ sudo gem install ruby-debug-0.10.0.gem
Building native extensions.  This could take a while…
ERROR:  Error installing ruby-debug-0.10.0.gem:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install ruby-debug-0.10.0.gem
extconf.rb:1:in `require’: no such file to load — mkmf (LoadError)
from extconf.rb:1

Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.0 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.0/ext/gem_make.out

[/source]

Então Bastou instalar o ruby1.8-dev, no Ubunto necessita apenas de ir no synaptic e pedir para instalar.

pronto. problema resolvido.

[source language='cpp']
maxprox@maxprox-desktop:~/Área de Trabalho$ sudo gem install ruby-debug-0.10.2.gem
Building native extensions. This could take a while…
Building native extensions. This could take a while…
Successfully installed linecache-0.43
Successfully installed ruby-debug-base-0.10.2
Successfully installed ruby-debug-0.10.2
3 gems installed
Installing ri documentation for linecache-0.43…
Installing ri documentation for ruby-debug-base-0.10.2…
Installing ri documentation for ruby-debug-0.10.2…
Installing RDoc documentation for linecache-0.43…
Installing RDoc documentation for ruby-debug-base-0.10.2…
Installing RDoc documentation for ruby-debug-0.10.2…
[/source]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • Twitter