Serviços RESTful em Ruby usando JRuby e Jersey
Em um esforço para trazer a expressividade do ruby e os frameworks REST do Java, Charles Nutter torna possível desenvolver serviços RESTful utilizando JRuby+Rails. Ele observa o esforço das comunidades de Ruby e Rails em desenvolver aplicações RESTful que alavancam a web.
[...] Os rubistas tem ajudado a desbravar o caminho, construindo aplicações repletas de REST em praticamente tudo que eles escrevem. O próprio Rails é construído em torno do REST, contando com a maioria dos constrollers trabalhando como interfaces RESTful, e além disso permite ferramentas adicionais que ajudam a realizar chamadas REST de outras aplicações de forma transparente. Se você está fazendo serviços RESTful para uma aplicação Ruby típica, o Rails é o caminho a ser seguido.
Para demonstrar a habilidade de definir um serviço RESTful em JRuby, ele examina as soluções existentes para bibliotecas e frameworks destinados a construir serviços RESTful em Java. Ele começa com um simples exemplo de serviço utilizando o padrão da API JAX-RS.
Eu segui o tutorial Getting Started do Jersey utilizando Ruby para tudo (e sem utilizar o Maven neste caso). A minha versão do HelloWorldResource deles fica assim em Ruby:
require 'java'java_import 'javax.ws.rs.Path' java_import 'javax.ws.rs.GET' java_import 'javax.ws.rs.Produces' java_package 'com.headius.demo.jersey' java_annotation 'Path("/helloworld")' class HelloWorld java_annotation 'GET' java_annotation 'Produces("text/plain")' def cliched_message "Hello World" end end
Ele descreve como o que ocorre por trás quando uma classe do ruby é compilada e descreve a representação em memória de um objeto.
Nos bastidores, esta classe irá carregar no fonte do nosso arquivo restful_service.rb e juntar todos os pedaços do Java e do Ruby, fazendo com que ambos possam ver o HelloWorld como a representação da classe HelloWorld. As chamadas de método são enviadas ao código Ruby, construtores enviam para o initialize, e por ai vai. Está realmente pertencendo aos dois mundos. Com o serviço em mãos, agora nós precisamos de um script de servidor para começar.
Ele prossegue lidando com o complicado CLASSPATH para o exemplo rodar.
Eu os coloquei na minha variável de ambiente CLASSPATH, mas sinta-se a vontade para fazer como você quiser.
jersey-core-1.2.jar jersey-server-1.2.jar jsr311-api-1.1.1.jar asm-3.1.jar grizzly-servlet-webserver-1.9.9.jar
Os quatro primeiros estão disponíveis em: jersey-archive download, e o último você pode encontrar no Maven ou outro lugar.
Ele conclui pedindo "exemplos para outras APIs que utilizam annotation que podemos testar com o Ruby". Há exemplos interessantes no fórum e visite o post original para detalhes de como desenvolver serviços RESTful com JRuby.
Conteúdo educacional
Lean na Globo.com
Bernardo Heynemann 24 Mai, 2013
Mobilidade: Frameworks, SOs e o Mercado
Ricardo Ogliari 23 Mai, 2013
Caminhos de uma estratégia mobile
Sérgio Lopes 23 Mai, 2013
Complexidade organizacional no Século 21
Alexandre Magno 16 Mai, 2013

Olá visitante
Você precisa cadastrar-se no InfoQ Brasil ou Login para enviar comentários. Há muitas vantagens em se cadastrar.Obtenha o máximo da experiência do InfoQ Brasil.
Dê sua opinião