SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
Desenvolvimento
 de portlets em
      Rails
2
Agenda
•   Ambientes
•   Ferramentas
•   Preparando o ambiente
•   Montando um projeto
•   Deploy
•   Extras
    -   File Download
    -   Preferências


                                3
Ambientes

Desenvolvimento   Produção




                             4
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
[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
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


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



                               16
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

  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
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
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
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
    * 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
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
[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
Extras - File Download


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




                                            33
Extras - File Download

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


• Criando a URL para o download

                                   34
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
Extras - Preferências
• Uma boa abordagem seria:




                             38
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
Obrigado




           44
P&R

Contenu connexe

Similaire à Desenvolvimento de portlets em Rails

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xRodrigo Urubatan
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPAMarcelo Veiga Neves
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Docker - Um capitulo à parte
Docker - Um capitulo à parteDocker - Um capitulo à parte
Docker - Um capitulo à parteMaurício Harley
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Helder da Rocha
 
Criando operators para Kubernetes usando Go - v2
Criando operators para Kubernetes usando Go - v2Criando operators para Kubernetes usando Go - v2
Criando operators para Kubernetes usando Go - v2Matheus Moraes
 

Similaire à Desenvolvimento de portlets em Rails (20)

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Atualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.xAtualizando rails do 2.x para 3.x
Atualizando rails do 2.x para 3.x
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPALinux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
Linux em Sistemas Embarcados - SACTA 2010 - UNIPAMPA
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Spacewalk - Solisc
Spacewalk - Solisc Spacewalk - Solisc
Spacewalk - Solisc
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Protegendo Docker
Protegendo DockerProtegendo Docker
Protegendo Docker
 
Docker - Um capitulo à parte
Docker - Um capitulo à parteDocker - Um capitulo à parte
Docker - Um capitulo à parte
 
Cucumber
CucumberCucumber
Cucumber
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)Gerência de Memória em Java - Parte I (2005)
Gerência de Memória em Java - Parte I (2005)
 
Criando operators para Kubernetes usando Go - v2
Criando operators para Kubernetes usando Go - v2Criando operators para Kubernetes usando Go - v2
Criando operators para Kubernetes usando Go - v2
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 

Desenvolvimento de portlets em Rails

  • 2. 2
  • 3. Agenda • Ambientes • Ferramentas • Preparando o ambiente • Montando um projeto • Deploy • Extras - File Download - Preferências 3
  • 5. Desenvolvimento • Servidor leve (WEBrick) • Gems nativas • Produtividade 5
  • 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
  • 9. Caterpillar • sudo gem install caterpillar • sudo jgem install caterpillar • Dependências - hpricot - warbler 9
  • 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
  • 14. Montando um projeto • Os portlets são mapeamentos no config/routes.rb 14
  • 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
  • 17. Montando um projeto • Configurando os portlets - config/portlets.rb 17
  • 18. Montando um projeto • No config/portlets.rb podemos configurar cada portlet (ser for necessário) 18
  • 19. Montando um projeto • Ainda contamos com as seguintes opções para cada um: 19
  • 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
  • 38. Extras - Preferências • Uma boa abordagem seria: 38
  • 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
  • 41. Extras - Preferências • Um exemplo de form para o modo de edição 41
  • 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
  • 44. Obrigado 44
  • 45. P&R