Gerador de relatórios web - Projeto de estágio
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
features
generators
lib
public
script
tasks
.gitignore
.gitmodules
History.txt
Manifest.txt
README.txt
Rakefile
acompanhamento.textile
init.rb
readme.textile

readme.textile

= TROPER

Plugin para construção e execução de relatórios na web.

== DESCRIPTION:

Troper é um plugin que irá ler os models do sistema hospedeiro, assim como suas reflexões através do mapeador objeto relacional ActiveRecord.

== FEATURES/PROBLEMS:

- Ainda não possui interface
- Funciona usando liquid templates
- Adiciona métodos to_liquid automaticamente para os atributos e outros modelos associados

== SYNOPSIS:

puts Troper::Report.new(“people”).output
NameEmailPhone
Jonatas Davi Paganinijonatasdp@gmail.com46 9911 7879
Peter Panpeter@pan.net46 8822 8800

== REQUIREMENTS:

sudo gem install liquid

== INSTALL:

exemplo a partir de um novo projeto rails

jonatas@xonatax-mac:~/projetos/rails$ rails -v

Rails 2.3.2

jonatas@xonatax-mac:~/projetos/rails$ rails my_first_app
create
create app/controllers
create app/helpers
create app/models…

jonatas@xonatax-mac:~/projetos/rails$ cd my_first_app/

adicionando dois modelos básicos para fazer a configuração:

jonatas@xonatax-mac:~/projetos/rails/my_first_app$ script/generate scaffold Person name:string email:string phone:string
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/people
exists app/views/layouts/
exists test/functional/
exists test/unit/
create test/unit/helpers/
exists public/stylesheets/
create app/views/people/index.html.erb
create app/views/people/show.html.erb
create app/views/people/new.html.erb
create app/views/people/edit.html.erb
create app/views/layouts/people.html.erb
create public/stylesheets/scaffold.css
create app/controllers/people_controller.rb
create test/functional/people_controller_test.rb
create app/helpers/people_helper.rb
create test/unit/helpers/people_helper_test.rb
route map.resources :people
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/person.rb
create test/unit/person_test.rb
create test/fixtures/people.yml
create db/migrate
create db/migrate/20090929003129_create_people.rb
jonatas@xonatax-mac:~/projetos/rails/my_first_app$ script/generate scaffold Address street:string city:string state:string references:person
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/addresses
exists app/views/layouts/
exists test/functional/
exists test/unit/
exists test/unit/helpers/
exists public/stylesheets/
create app/views/addresses/index.html.erb
create app/views/addresses/show.html.erb
create app/views/addresses/new.html.erb
create app/views/addresses/edit.html.erb
create app/views/layouts/addresses.html.erb
identical public/stylesheets/scaffold.css
create app/controllers/addresses_controller.rb
create test/functional/addresses_controller_test.rb
create app/helpers/addresses_helper.rb
create test/unit/helpers/addresses_helper_test.rb
route map.resources :addresses
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/address.rb
create test/unit/address_test.rb
create test/fixtures/addresses.yml
exists db/migrate
create db/migrate/20090929003452_create_addresses.rb

depois disso precisamos adicionar as tags que indicam os relacionamentos entre os modelos:

jonatas@xonatax-mac:~/projetos/rails/my_first_app$ cat app/models/*

class Address < ActiveRecord::Base
belongs_to :person
end

class Person < ActiveRecord::Base
has_many :addresses
end

= migrando o banco de dados

rake db:migrate

= instalando o plugin troper

Agora o sistema de exemplo já está pronto. A instalação do plugin é feita através do seguinte comando:

jonatas@xonatax-mac:~/projetos/rails/my_first_app$ git clone git://github.com/jonatas/troper.git vendor/plugins/troper Initialized empty Git repository in /Users/jonatas/projetos/rails/my_first_app/vendor/plugins/troper/.git/ remote: Counting objects: 433, done. remote: Compressing objects: 100% (353/353), done. remote: Total 433 (delta 210), reused 152 (delta 53) Receiving objects: 100% (433/433), 11.89 MiB | 19 KiB/s, done. Resolving deltas: 100% (210/210), done

= gerando as rotas e o html

Quando o troper estiver instalado, então deve-se gerar as rotas e o html para que permitiram parasitar no sistema atual. Para isso, foram criados os geradores automáticos.

script/generate troper_route script/generate troper_html

Na primeira linha será escrito a rota que permite acesso a url /datasources que é usado para se comunicar com as funcionalidades da interface do Troper.
O segundo gerador copia o arquivo troper.html para a pasta pública.

= A interface do plugin usa o framework ExtJs, e espera que o mesmo esteja na pasta pública. ExtJs será adicionado a bíblioteca como submodulo conforme o código a seguir:

git submodule add git://github.com/probonogeek/extjs.git public/extjs

git submodule init

git submodule update

ou se o projeto não estiver usando git apenas faça um clone

git clone git://github.com/probonogeek/extjs.git public/extjs

= testando a interface

Iniciando o servidor no modo desenvolvimento padrão, é possível acessar o link http://localhost:3000/troper.html e iniciar a construção de relatórios. Se acontecer alguma coisa errada, lembre-se de que os comandos script/generate troper_route e script/generate troper_html são necessários para o plugin funcionar.

= testando no console

jonatas@xonatax-mac:~/projetos/rails/my_first_app$ c
Loading development environment (Rails 2.3.2)
>> Troper::Report.new(“people”).output
=> “”people\“>NameEmailPhone”
>> Person.all
=> []
>> Person.create :name => “jonatas davi paganini”, :email => “jonatasdp@gmail.com”, :phone => “4699117879”, :addresses => [Address.new :street => “rua pernambuco, 1094”, :city => “Francisco Beltrão”, :state=> “PR”]
=> #<Person id: 1, name: “jonatas davi paganini”, email: “jonatasdp@gmail.com”, phone: “4699117879”, created_at: “2009-09-29 01:00:52”, updated_at: “2009-09-29 01:00:52”>
>> report = Troper::Report.new(“people”)
>> puts report.output
=> “”people\">NameEmailPhone
jonatas davi paganinijonatasdp@gmail.com4699117879

"

>> report.columns[“email”].formats << “link_to_mail” # adicionando formatadores para as colunas
=> [“link_to_mail”]

>> puts report.output


NameEmailPhone
jonatas davi paganinijonatasdp@gmail.com4699117879

= explicação sobre diretórios e arquivos

== docs/ – pasta com arquivos da documentação no formato txt usando a marcação textile
== doc/ – pasta com a documentação do projeto, se estiver vazia é necessário re-gerar a documentação usando: rake rdoc

= arquitetura.txt - idéia inicial do comportamento do framework e como irá lidar com as estruturas internamente. = caminho_das_pedras.txt – organização das idéias de como vai funcionar o sistema passo a passo.
= proposta.txt - proposta do projeto de estágio da Unipar. = projeto.doc – arquivo que dirige o projeto geral de estágio.
=== relatorio_final_estagio.tex – arquivo sobre as conclusões sobre a experiência de fazer o projeto.

== script/

pasta dos scripts ruby para automatizar tarefas triviais do desenvolvimento

== tasks/
tarefas rake – use rake —tasks para ver a lista de tarefas

== Rakefile — organiza as tarefas rake

== acompanhamento.textile
histórico de alterações no projeto, guia de acompanhamento contabilizando as horas e tarefas, juntamente com os professores.

== para gerar a documentação digite:
rake documenta

== para gerar o relatório mensal de estágio do mês 4 digite:

rake acompanhamento mes=04

== LICENSE:

(The MIT License)

Copyright © 2009 Jônatas Davi Paganini

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
‘Software’), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.