6. Produção
• .war
• Deploy no Liferay
• Gems compatíveis com o JRuby
• Xmls de configuração do portlet
• Escalabilidade
6
7. 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
10. 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
11. 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
12. 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
13. Montando um projeto
• Criar o projeto rails
- Para caterpillar >= 1.3.0
- caterpillar rails nome_do_projeto
[tulios] ~/Projetos/rails caterpillar rails mapa_do_tesouro
Checking for required gems...OK
Checking for JRuby binary...OK
Checking for required gems in JRuby...OK
Creating Rails project...OK
Updating config/environment.rb...OK
Activating caterpillar...OK
Configuring warbler...OK
13
15. 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
16. Montando um projeto
A “porta de entrada”
do portlet será o
controller e action
definidos no
config/routes.rb
16
20. Montando um projeto
• Em config/warble.rb configuramos
características do empacotamento
e do funcionamento em produção
20
21. 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
22. 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
23. Deploy
• Primeiro devemos gerar os xmls
de configuração do portlet
- caterpillar makexml
Using Liferay schema build 5201, version 5.2.1
Caterpillar 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
23
24. 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.xml
24
25. Deploy
• Os arquivos deverão ser colocados
em ../liferay/tomcat/webapps/ROOT/WEB-INF
• Utilize o comando
- caterpillar deploy:xml
* deploying XML files to /opt/liferay/tomcat/webapps/
ROOT/WEB-INF
* tmp/portlet-ext.xml
* tmp/liferay-portlet-ext.xml
* tmp/liferay-display.xml
25
26. 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
27. 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
28. Deploy
• Resumindo a geração e o deploy
dos XMLs
- caterpillar makexml
- caterpillar deploy:xml
28
29. Deploy
• Para gerar o .war utilize
- caterpillar warble
* 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
29
30. Deploy
• O arquivo .war deverá ser gerado
na raiz do projeto
• Coloque o arquivo em /liferay/deploy
- caterpillar deploy:war
30
31. Deploy
• Resumindo a geração e o deploy
do .war
- caterpillar warble
- caterpilar deploy:war
31
32. Deploy
• Podemos resumir todo o deploy (xmls + .war)
em um comando
- caterpillar deploy
[tulios] ~/Projetos/rails/teste caterpillar deploy
Caterpillar 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/jruby
jar 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
32
33. Extras - File Download
• Resource Portlet
- Faça um método de controller que envie
um arquivo
33
34. Extras - File Download
• Inclua o módulo Liferay no seu
application_helper.rb
• Criando a URL para o download
34
35. 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
36. Extras - Preferências
• No controller mapeado como
“porta de entrada” do portlet crie
um método preferences
36
37. 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
39. 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
40. 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
42. 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
43. Mais
• Para mais informações
- http://github.com/tulios/caterpillar
- http://github.com/tulios/html2jsr286
• Esse é o rails-portlet =]
43