sea rails portlet
DESCRIPTION
Desenvolvimento de portlets em rails com o rails-portletTRANSCRIPT
Desenvolvimento de portlets em
Rails
2
3
Agenda
• Ambientes
• Ferramentas
• Preparando o ambiente
• Montando um projeto
• Deploy
• Extras
- File Download
- Preferências
Ambientes
4
Desenvolvimento Produção
Desenvolvimento
• Servidor leve (WEBrick)
•Gems nativas
• Produtividade
5
Produção
• .war
•Deploy no Liferay
•Gems compatíveis com o JRuby
•Xmls de configuração do portlet
• Escalabilidade
6
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
Rails-portlet
8
Caterpillar
• sudo gem install caterpillar
• sudo jgem install caterpillar
•Dependências
- hpricot
- warbler
9
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
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
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
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
Montando um projeto
•Os portlets são mapeamentos no config/routes.rb
14
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
Montando um projeto
16
A “porta de entrada” do portlet será o controller e action definidos no config/routes.rb
Montando um projeto
•Configurando os portlets
- config/portlets.rb
17
Montando um projeto
•No config/portlets.rb podemos configurar cada portlet (ser for necessário)
18
Montando um projeto
•Ainda contamos com as seguintes opções para cada um:
19
Montando um projeto
• Em config/warble.rb configuramos características do empacotamento e do funcionamento em produção
20
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
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
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
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
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
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
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
Deploy
•Resumindo a geração e o deploy dos XMLs
- caterpillar makexml
- caterpillar deploy:xml
28
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
Deploy
•O arquivo .war deverá ser gerado na raiz do projeto
•Coloque o arquivo em /liferay/deploy
- caterpillar deploy:war
30
Deploy
•Resumindo a geração e o deploy do .war
- caterpillar warble
- caterpilar deploy:war
31
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
Extras - File Download
•Resource Portlet
- Faça um método de controller que envie um arquivo
33
• Inclua o módulo Liferay no seu application_helper.rb
•Criando a URL para o download
34
Extras - File Download
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
Extras - Preferências
•No controller mapeado como “porta de entrada” do portlet crie um método preferences
36
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
• Uma boa abordagem seria:
38
Extras - Preferências
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
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
Extras - Preferências
•Um exemplo de form para o modo de edição
41
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
Mais
• Para mais informações
- http://github.com/tulios/caterpillar
- http://github.com/tulios/html2jsr286
• Esse é o rails-portlet =]
43
44
Obrigado
P&R