sea rails portlet

45
Desenvolvimento de portlets em Rails

Upload: tulio-ornelas

Post on 22-May-2015

1.125 views

Category:

Technology


1 download

DESCRIPTION

Desenvolvimento de portlets em rails com o rails-portlet

TRANSCRIPT

Page 1: SEA Rails Portlet

Desenvolvimento de portlets em

Rails

Page 2: SEA Rails Portlet

2

Page 3: SEA Rails Portlet

3

Agenda

• Ambientes

• Ferramentas

• Preparando o ambiente

• Montando um projeto

• Deploy

• Extras

- File Download

- Preferências

Page 4: SEA Rails Portlet

Ambientes

4

Desenvolvimento Produção

Page 5: SEA Rails Portlet

Desenvolvimento

• Servidor leve (WEBrick)

•Gems nativas

• Produtividade

5

Page 6: SEA Rails Portlet

Produção

• .war

•Deploy no Liferay

•Gems compatíveis com o JRuby

•Xmls de configuração do portlet

• Escalabilidade

6

Page 7: SEA Rails Portlet

Ferramentas

• Rails-portlet

- É um generic-portlet responsável por coordenar a conversa entre o Liferay e a aplicação Rails

• Caterpillar

- Responsável por auxiliar na montagem do projeto, empacotamento (.war) e comunicação com o Liferay

7

Page 8: SEA Rails Portlet

Rails-portlet

8

Page 9: SEA Rails Portlet

Caterpillar

• sudo gem install caterpillar

• sudo jgem install caterpillar

•Dependências

- hpricot

- warbler

9

Page 10: SEA Rails Portlet

Preparando o ambiente

• JRuby >= 1.4

- apt-get install jruby (Debian like) ou port install jruby (MacOS)

- http://jruby.org

- Garanta que a variável JRUBY_HOME exista

• Gems (Instale no Ruby e no JRuby)

- sudo gem install caterpillar rails warbler jruby-jars

- sudo jgem install caterpillar rails warbler jruby-jars

- Não use GEM_HOME

10

Page 11: SEA Rails Portlet

Preparando o ambiente

•Atenção!

•As gems devem ser instaladas tanto no Ruby (desenvolvimento) quanto no JRuby, pois no empacotamento elas serão lidas do JRuby

11

Page 12: SEA Rails Portlet

Preparando o ambiente

•Rails-Portlet >= 0.10.0

- Coloque o jar do Rails-Portlet em:liferay/tomcat/webapps/ROOT/WEB-INF/lib/

- Ou caterpillar jar:install

12

Page 13: SEA Rails Portlet

Montando um projeto

• Criar o projeto rails

- Para caterpillar >= 1.3.0

- caterpillar rails nome_do_projeto

13

[tulios] ~/Projetos/rails caterpillar rails mapa_do_tesouroChecking for required gems...OKChecking for JRuby binary...OKChecking for required gems in JRuby...OKCreating Rails project...OKUpdating config/environment.rb...OKActivating caterpillar...OKConfiguring warbler...OK

Page 14: SEA Rails Portlet

Montando um projeto

•Os portlets são mapeamentos no config/routes.rb

14

Page 15: SEA Rails Portlet

Montando um projeto

• Podemos utilizar os wildcards :controller e :action para que o portlet possa acessar outros controladores e actions

• Caso a action não seja informada, o método index será chamado

15

Page 16: SEA Rails Portlet

Montando um projeto

16

A “porta de entrada” do portlet será o controller e action definidos no config/routes.rb

Page 17: SEA Rails Portlet

Montando um projeto

•Configurando os portlets

- config/portlets.rb

17

Page 18: SEA Rails Portlet

Montando um projeto

•No config/portlets.rb podemos configurar cada portlet (ser for necessário)

18

Page 19: SEA Rails Portlet

Montando um projeto

•Ainda contamos com as seguintes opções para cada um:

19

Page 20: SEA Rails Portlet

Montando um projeto

• Em config/warble.rb configuramos características do empacotamento e do funcionamento em produção

20

Page 21: SEA Rails Portlet

Montando um projeto

•No config/warble.rb devemos informar as gems nativas do Java, para que o warbler faça o tratamento correto no empacotamento

21

Page 22: SEA Rails Portlet

Montando um projeto

• Ainda podemos definir o pool de runtimes do JRuby

• Caso nenhum valor seja informado o pool irá crescer de acordo com a necessidade

22

Page 23: SEA Rails Portlet

Deploy

• Primeiro devemos gerar os xmls de configuração do portlet

- caterpillar makexml

23

Using Liferay schema build 5201, version 5.2.1Caterpillar 1.3.0 configured for Liferay version 5.2.1 at /opt/liferay/tomcat !! no route for portlet_test_bench * -> tmp/portlet-ext.xml * -> tmp/liferay-portlet-ext.xml * -> tmp/liferay-display.xml

Page 24: SEA Rails Portlet

Deploy

• Não se preocupe com a mensagem

- !! no route for portlet_test_bench

• Essa rota é utilizada apenas para teste

• Os arquivos criados na pasta tmp foram:

- portlet-ext.xml

- liferay-portlet-ext.xml

- liferay-display.xml24

Page 25: SEA Rails Portlet

Deploy

• Os arquivos deverão ser colocados em ../liferay/tomcat/webapps/ROOT/WEB-INF

• Utilize o comando

- caterpillar deploy:xml

25

* deploying XML files to /opt/liferay/tomcat/webapps/ROOT/WEB-INF * tmp/portlet-ext.xml * tmp/liferay-portlet-ext.xml * tmp/liferay-display.xml

Page 26: SEA Rails Portlet

Deploy

• O arquivo liferay-display.xml possui as categorias dos portlets presentes no liferay + as categorias do seu portlet

• Esta edição pode ser feita de forma manual

26

Page 27: SEA Rails Portlet

Deploy

•Os arquivos portlet-ext.xml e liferay-portlet-ext.xml configuram o seu portlet com o Rails-portlet

•Caso você tenha outros portlets em Rails mantenha a configuração de todos eles nesses arquivos

27

Page 28: SEA Rails Portlet

Deploy

•Resumindo a geração e o deploy dos XMLs

- caterpillar makexml

- caterpillar deploy:xml

28

Page 29: SEA Rails Portlet

Deploy

• Para gerar o .war utilize

- caterpillar warble

29

* Building WAR using Warbler 1.0.1 on JRuby at /opt/jruby/bin/jruby* jar cf meu_portlet.war -C tmp/war .* Warbler finished successfully

Page 30: SEA Rails Portlet

Deploy

•O arquivo .war deverá ser gerado na raiz do projeto

•Coloque o arquivo em /liferay/deploy

- caterpillar deploy:war

30

Page 31: SEA Rails Portlet

Deploy

•Resumindo a geração e o deploy do .war

- caterpillar warble

- caterpilar deploy:war

31

Page 32: SEA Rails Portlet

Deploy

• Podemos resumir todo o deploy (xmls + .war) em um comando

- caterpillar deploy

32

[tulios] ~/Projetos/rails/teste caterpillar deployCaterpillar 1.3.0 configured for Liferay version 5.2.3 at /opt/liferay/tomcat !! no route for portlet_test_bench * -> tmp/portlet-ext.xml * -> tmp/liferay-portlet-ext.xml * -> tmp/liferay-display.xml * Building WAR using Warbler 1.0.1 on JRuby at /Applications/jruby-1.4.0/bin/jrubyjar cf teste.war -C tmp/war . * Warbler finished successfully * deploying XML files to /opt/liferay/tomcat/webapps/ROOT/WEB-INF * tmp/portlet-ext.xml * tmp/liferay-portlet-ext.xml * tmp/liferay-display.xml * ..removing previous installs.. * deploying the WAR package to /opt/liferay/deploy/teste.war

Page 33: SEA Rails Portlet

Extras - File Download

•Resource Portlet

- Faça um método de controller que envie um arquivo

33

Page 34: SEA Rails Portlet

• Inclua o módulo Liferay no seu application_helper.rb

•Criando a URL para o download

34

Extras - File Download

Page 35: SEA Rails Portlet

Extras - Preferências

• Habilite o modo de edição

- instanceable true = preferências para cada instância de portlet

- instanceable false = preferências para qualquer “instância” do portlet

35

Page 36: SEA Rails Portlet

Extras - Preferências

•No controller mapeado como “porta de entrada” do portlet crie um método preferences

36

Page 37: SEA Rails Portlet

Extras - Preferências

•O Rails-portlet irá fornecer um hash com as preferências salvas no Liferay

• Para isso inclua o módulo PortletSupport para ter acesso ao método get_liferay_preferences

37

Page 38: SEA Rails Portlet

• Uma boa abordagem seria:

38

Extras - Preferências

Page 39: SEA Rails Portlet

Extras - Preferências

•Dessa forma teremos acesso as preferências em cada método de action

•Atenção!

• Em modo de edição o único método chamado será o preferences, tanto para post quanto para get

39

Page 40: SEA Rails Portlet

Extras - Preferências

• Lembre-se!

•As preferências ficam salvas no Liferay e não na aplicação, por isso a necessidade de recupera-las a cada requisição

40

Page 41: SEA Rails Portlet

Extras - Preferências

•Um exemplo de form para o modo de edição

41

Page 42: SEA Rails Portlet

Extras - Preferências

• Somente os parâmetros com o sufixo _preference serão salvos no Liferay

•O método preferences será chamado novamente após a operação

42

Page 43: SEA Rails Portlet

Mais

• Para mais informações

- http://github.com/tulios/caterpillar

- http://github.com/tulios/html2jsr286

• Esse é o rails-portlet =]

43

Page 44: SEA Rails Portlet

44

Obrigado

Page 45: SEA Rails Portlet

P&R