Vraptor scaffold em projetos GAE

15 respostas
Mr_Arthur

Existe um arquivo de configuração do vraptor scaffold dentro da pasta META-INF.
Com ele eu consigo setar o package onde é para gerar os artefatos e o template engine.
Agora não achei a configuração de onde vão ficar minhas jsps… Parece que o padrão é src/main/java/, não consigo mudar para war/

Obrigado!

15 Respostas

Lucas_Cavalcanti

as jsps seguem o mesmo padrão que o VRaptor… no caso do gae war/WEB-INF/jsps

Mr_Arthur

Não saquei…
O vraptor-scaffold.properties está em war/META-INF/
Como mudo a configuração de onde o vraptor scaffold vai buscar esse arquivo?
Segue o erro aí.

/home/c1233611/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/yaml.rb:143:in `initialize': No such file or directory - src/main/webapp/META-INF/vraptor-scaffold.properties (Errno::ENOENT) from /home/c1233611/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/yaml.rb:143:in `open' from /home/c1233611/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/yaml.rb:143:in `load_file' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/configuration.rb:12:in `config' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/configuration.rb:20:in `package' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/configuration.rb:24:in `main_class_path' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/../lib/generators/scaffold_generator/controller_generator/controller_generator.rb:8:in `build' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/../lib/generators/scaffold_generator/scaffold_generator.rb:20:in `controller_generator' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/task.rb:22:in `send' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/task.rb:22:in `run' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/invocation.rb:118:in `invoke_task' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/invocation.rb:124:in `invoke_all' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/shell.rb:14:in `map' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/core_ext/ordered_hash.rb:73:in `each' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/invocation.rb:124:in `map' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/thor-0.14.4/lib/thor/invocation.rb:124:in `invoke_all' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/vraptor-scaffold.rb:24:in `run_scaffold_generator' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/../lib/vraptor-scaffold.rb:10:in `execute' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/gems/vraptor-scaffold-0.0.4/bin/vraptor:6 from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/bin/vraptor:19:in `load' from /home/c1233611/.rvm/gems/ree-1.8.7-2010.02/bin/vraptor:19

rodolfoliviero

Olá Arthur,

o arquivo vraptor-scaffold.properties fica nesse caminho src/main/webapp/META-INF/vraptor-scaffold.properties

a principio não é possível mudar a localização dele.

Sobre o suporte a gae tem uma issue aberta https://github.com/caelum/vraptor-scaffold/issues#issue/17 para gerar um projeto compativel com o gae algo do tipo

eu não entendi mto bem sua dúvida, era isso que vc queria saber?
como vc fez para gerar o erro abaixo?

Mr_Arthur

A minha estrutura de projeto não tem src/main/webapp, tem war/

Lucas_Cavalcanti

crie esse arquivo então:

src/main/webapp/META-INF/vraptor-scaffold.properties

com o conteúdo do que está na pasta war

rodolfoliviero

o gerador do scaffold espera que o projeto tenha essa estrutura src/main/webapp
você criou esse projeto com o scaffold ou é um projeto antigo que vc esta tentando adaptar o scaffold?

Mr_Arthur

justamente rodolfo.
Peguei o blank-project-gae e estou adaptando para o vraptor-scaffold.

Mr_Arthur

Lucas Cavalcanti:
crie esse arquivo então:

src/main/webapp/META-INF/vraptor-scaffold.properties

com o conteúdo do que está na pasta war

é, eu posso a passar a usar a estrutura padrão.
Se fosse em java eu tentaria “coçar minha própria coceira”, o lance é que ainda to meio por fora de ruby. ;~

mas é isso aê, valeu galera!

rodolfoliviero

Arhtur se vc quiser adaptar o scaffold ao gae e nao tem sabe mto de ruby faz o seguinte.

gera a estrutura padrão do vraptor scaffold

ai vc faz todas as alteraçoes para funcionar no gae. então vc pode ia la na issue https://github.com/caelum/vraptor-scaffold/issues#issue/17
e colocar o que precisa ser feito para ser compativel. Ai eu implemento a funcionalidade.

o que acha?

se vc pudesse fazer isso ia ser mto util.

att.

Mr_Arthur

Segue o projeto em branco do vraptor-gae... --build-tool dele é a default mesmo, ant+ivy. Já adicionei o framework de persistencia também, objectify.
Link do projeto: https://[email removido]/arthurmc/vraptor-gae-ant-ivy-objectify-blank-project.git

Pra você saber o que adicionar apartir do projeto que eu criei, segue uma listagem de arquivos gerados apartir do vraptor scaffold default com um indicador no final de cada linha.
Para rodar o projeto no eclipse, fazer os seguintes passos:

1. ant resolve (no terminal)
2. copiar os arquivos de libs-vraptor-gae/ para src/main/webapp/WEB-INF/lib/
3. adicionar ao build path os jars do diretórios e subdiretórios de lib/
4. adicionar ao build path os jars do diretório libs-vraptor-gae/

* = substitui o da criação padrão pelo o que eu fiz.
& = exclui o arquivo da criação do projeto
% = mantém o arquivo na criação do projeto.

create  .project *
create  .classpath *
create  .settings * inclusive os arquivos que estão dentro da pasta.
create  .settings/org.eclipse.jdt.core.prefs &
create  .settings/org.eclipse.wst.common.component &
create  .settings/org.eclipse.wst.common.project.facet.core.xml &
create  .settings/org.eclipse.wst.jsdt.ui.superType.container &
create  .settings/org.eclipse.wst.jsdt.ui.superType.name &
create  build.xml *
create  build.properties *
create  ivy.xml *
create  ivy-2.2.0.jar %
create  src/main/java %
create  src/main/java/app %
create  src/main/java/app/controllers %
create  src/main/java/app/models/Entity.java *
create  src/main/java/app/repositories/Repository.java *
create  src/main/resources %
create  src/main/resources/META-INF/persistence.xml %
create  src/main/resources/log4j.properties %
create  src/main/resources/messages.properties &
create  src/main/webapp %
create  src/main/webapp/WEB-INF/web.xml *
create  src/main/webapp/images %
create  src/main/webapp/index.jsp %
create  src/main/webapp/javascripts/jquery.min.js %
create  src/main/webapp/stylesheets/scaffold.css %
create  src/main/webapp/META-INF/vraptor-scaffold.properties %
create  src/main/webapp/WEB-INF/decorators.xml %
create  src/main/webapp/WEB-INF/decorators/main.jsp %
create  src/main/webapp/WEB-INF/jsp %
create  src/test/java %
create  src/test/java/app %
create  src/test/java/app/controllers %
create  src/test/java/app/models %
create  src/test/java/app/repositories %
create  src/test/resources %

Passar a criar:
libs-vraptor-gae/*.jars -> Na verdade eu gostaria de instalar esses jars manualmente usando o ivy, mas não sei como fazer isso. Eles não existem em repositórios publicos.
src/main/webapp/WEB-INF/appengine-web.xml

Acho que é isso cara.
Se faltou alguma coisa ou tiver alguma dúvida, fala aí pra gente conseguir fazer esse lance.
Valeu!

Mr_Arthur

Adicionei uma classe: CriadorDeSessaoDB.
Um @Component request scoped que cria a sessão do objectify.
Claro, se essa não for a melhor forma de fazer isso, aí você faz ou me fala como faz.
Ah, se o nome também não for bom, muda também. hehe

valeu.

rodolfoliviero

Arhtur,

excelente trabalho.

eu adicionei essa thread do guj e o link do seu projeto la na issue no github.

agora vou começar a implementar :slight_smile:

Seu projeto esta fazendo um crud de alguma entidade?

Mr_Arthur

está fazendo o crud sim.

Falando em crud, eu gostaria de testar minhas conversas com o banco. Não estou conseguindo usar o objectify nos testes :/. Se alguém aí souber como, por favor!

Valey!

Mr_Arthur

Na verdade não. Esse projeto da url que eu passei não faz nenhum crud.
Porém se gerar qualquer modelo apartir do vraptor scaffold e utilizar o Repository genérico (que já está adaptado para o objectify), irá funcionar.

Mr_Arthur

Adicionei uma classe no projeto.
TestBase.java é uma classe que configura o banco de dados local sem precisar do servidor web.
Só extender e fazer os testes de integração :slight_smile:

Peguei aqui: http://code.google.com/p/objectify-appengine/source/browse/trunk/src/com/googlecode/objectify/test/TestBase.java?r=606

Criado 10 de fevereiro de 2011
Ultima resposta 13 de fev. de 2011
Respostas 15
Participantes 3