Webrick dando FORWARD para rhtml
Páginas: 1 2
|
|
A dúvida é bem simples: Quero um servlet do Webrick que por exemplo irá num banco de dados pegar um valor e depois repassar esse valor para um rhtml (erb) que irá exibi-lo dentro de um HTML. (O clássico de MVC!) Como eu faço um forward de um servlet WEBRICK para um template ERB (.rhtml) ??? Existe algum tutorial/exemplo de como se fazer isso ??? Obrigado! |
|
|
você pode utilizar o “render” se não for utilizar o padrão, se precisar de algo diferente. Se utilizar o padrão, seu controlador foo tem uma action bar, o HTML deve está dentro de app/views/foo/bar.html.erb |
|
|
Valeu Rafael! O que eu queria é o seguinte: - webbrick servlet recebe a requisição - faz o que tem que fazer (vai no banco por exemplo) - faz um FORWARD para qualquer arquivo rhtml que vai exibir o html com o resultado Algo básico como:
<html>
<h1><%= #{firstname} %></h1>
</html>
|
|
|
Então, é exatamente isso. O “forward” é automático ao final da execução do método no controller. Então vai ser renderizado layout com mesmo nome do controller (isso se nenhum outro for específicado, ou se não existir layout com nome do controller, ele utiliza o application.html.erb) e dentro do layout ele vai renderizar a view específica do método, com o mesmo nome do método. (por exemplo views\user\show.html.erb quando acessar o método show do controller user) |
|
|
Beleza, mas se eu quiser especificar um arquivo em um outro lugar para ser processado? Como indico que quero outro arquivo? E tem que ser .html.erb ou pode ser .rhtml ? Valeu Rafael! |
|
|
Opa, da uma olhada nesse carinha aqui http://api.rubyonrails.org/classes/ActionController/Base.html#M000443 |
|
|
O problema é que isso aí é RAILS, não WEBRICK. Me parece trivial termos um framework MÍNIMO em Ruby para fazer o MVC: ruby controller → ruby servlet → ruby server pages ruby server pages = ERB Template A partir disso poderiam surgir N outros frameworks em Ruby, mais ou menos como aconteceu com o Java. Mas as pessoas só conseguem ver RoR, estão embebidas por ele… Assim fica difícil… :-) |
|
|
webrick é um servidor http… alguma confusão ? Além disso, você não precisa utilizar todo o rails, pode utilizar somente o ActiveRecord (por exemplo) e escrever sua propria engine de controllers |
|
|
webrick é mais que um servidor web, ele é um framework para atender a requisições http. Um servidor web soa mais como algo que apenas serve conteúdo estático. Parece que o Rails foi o único que implementou um MVC mínimo: requisicao – servlet – template. Me parece FUNDAMENTAL que tenhamos um framework mínimo MVC em Ruby. Por que não não olhar para o caminho percorrido pelo Java no server side e tentar oferecer o mesmo? Parece que o pessoal do Ruby está muito ocupado com o RoR. De novo: Java tem um esquema trivial de MVC chamado servlet + JSP. A partir disso surgiram 1 milhão de frameworks. Ruby precisa de DIVERSIDADE, LIBERDADE e SUPORTE. Só num mercado livre e desrgulado as coisas boas aparecem. |
|
|
Bem, pra mim um servidor http não tem esta associação com conteúdo estático, mas isso não importa. Além do rails, outro framework conhecido é o Merb Acho que o pessoal do Ruby não está preocupado em seguir o exemplo do Java… não sei se a maioria da comunidade considera Java exatamente um “modelo”. IMHO Java (a linguagem) tem mais pra aprender com Ruby do que o inverso. |
|
|
[mode metido:on] Seria interessante tentar enxergar outras possibilidades de se fazer as coisas. A forma como Java implementa as coisas é comprovadamente muito boa, mas não é a única. E quanto esta questão: É justamente esta a filosofia. Não termos que aprender 67 frameworks para desenvolver um aplicativo. Ou tu acha necessário usar o framework XYZ pra uma função, JKL para outra, e outro KJT para fazer a ligação entre o XYZ e o JKL? [modo metido:off] |
|
|
“Acho que o pessoal do Ruby não está preocupado em seguir o exemplo do Java… não sei se a maioria da comunidade considera Java exatamente um “modelo”. IMHO Java (a linguagem) tem mais pra aprender com Ruby do que o inverso.” Arrogância só vai prejudicar o Ruby. Ruby é uma linguagem mais legal, mais poderosa e mais flexível que o Java. SIIIIIIIIIIIIIMMMMMM !!! Qualquer criança enxerga isso… Agora voltemos para o mundo real para perceber que Java teve um sucesso estrondoso em termos de projetos open-source, adoção de programadores e empresas, livros, frameworks, etc. Ruby quer ser um brinquedo de uma comunidade restrita de fanáticos? (Vide smalltalk, lisp, etc.) Ou Ruby quer ganhar o mundo e o mercado? Se for a opção um tenho certeza que estamos no caminho certo. Se for a opção dois, então precisamos de um base para decolar. E para aplicações web isso seria um framework web MVC fundamental, assim como Servlets + JSP do Java o é. A partir desse framework surgiriam milhares de outros. Eu estou estudando Ruby e tentarei fazer isso. Espero conseguir, pois estou começando agora com Ruby. Mas me espanta constatar que poucas pessoas sentiram falta disso. Desculpa a frustração de quem está vindo do mundo Java… |
|
|
Não Marcelo! Quando vc diz “É justamente esta a filosofia. Não termos que aprender 67 frameworks para desenvolver um aplicativo. Ou tu acha necessário usar o framework XYZ pra uma função, JKL para outra, e outro KJT para fazer a ligação entre o XYZ e o JKL?” Eu concordo em genero, numero e grau. Aprender 67 frameworks para fazer uma aplicação web é PÉSSIMO. É uma pena que 90% das pessoas que trabalham com Java não percebam isso. Alguns poucos (como eu) já perceberam isso a muito tempo. A questão é ter liberdade de escolha e DIVERSIDADE de projetos, frameworks, etc. Eu não vejo problema em se ter 1000 frameworks web em Java. Pelo contrário, eu escolho e que mais me agrada, o que mais atende ao meu projeto em questão e pronto. Quando eu entro numa sorveteria, eu gosto que tenha vários sabores, quanto mais melhor. Qual é a graça de ir numa sorveteria que tem 2 sabores no cardápio? |
|
|
Sim, temos que ter opções, e como ja foi mostrado no post acima, tem o Merb, tem também o Nitro , existem sim outros Framewokrs. Porém, rails implementa o suficiente para vc desenvolver um aplicativo web, ele não implementa nada que contenha regra de negócio. Isto que você quer fazer não é culpa do Rails, ele não impede q você faça isso. Mas ele é extremamente flexível para que você o adapte para sua forma de trabalhar. Pois veja, se não estou enganado, você é o primeiro a aparecer aqui na comunidade com essa dúvida, ou seja, para a maioria do pessoal não foi preciso implementar essa funcionalidade. Não caberia colocar isso no framework. Porém, como eu disse logo acima, ele é simples o suficiente para que você implemente isto que vc quer. Dai vc vai pensar, putz, vou ter que implementar isso, se fosse no Java já estaria implementado, dai eu lhe digo, se isso é realmente necessário, com certeza já existe um plugin, ou algum tutorial ensinando a fazer isto em RoR, agora, caso vc não encontre nenhum material a respeito, não seria o correto você repensar se esta forma realmente se faz necessária? |
|
|
A, e outro detalhe, webrick é indicado apenas para desenvolvimento, para produção, o mais indicado é o Mongrel. Quem sabe, no mongrel você encontre o que está procurando. |
|
|
Acho que vc está procurando onde está escrito o modelo de request/response, contexto, etc do ruby, é isso? “R2EE” Ruby Enterprise Edition?
Acho que pra isso temos três alternativas
|
|
|
Marketing meu amigo, a Sun investe milhões em marketing e lavagem mental. RoR, sem marketing, sem publicidade, soh no boca a boca, chegou onde chegou, e agora a própria Sun está de olho nessa nova forma de desenvolvimento (já ouviu falar em JRuby?). Se a progenitora do Servlet + JSP está comovida com nossa forma de desenvolver, quem somos nós para discordar? |
|
|
Sérgio, o RDoc de ERB está aqui . Além disso, se você quer ver exemplos de frameworks minimalistas, veja Camping e Sinatra |
|
|
E outra (Hoje estou inspirado)
E vc, qual vc prefere, fica estudando as dezenas de opções para o melhor framework, ou simplesmente desenvolver o sistema pro teu cliente e faturar a grana? |
|
|
Concordo com vcs. Eu quero simplesmente ter a possibilidade de desenvolver o meu próprio framework caseiro para um projeto próprio. Isso é bastante normal e outras pessoas também devem querer fazer isso. Me parece esquisito desenvolver ele em cima de RAILS. Vou dar uma olhada no Mongrel (obrigado pela dica Marcelo). O que eu quero é apenas um modelo simples de controller → servlet → template. Acredito que não estou pedindo muito para o Ruby… |
|
|
Cara, então antes de desenvolver um outro framework, porque voce não desenvolve um plugin então. Além de estar fazendo o voce quer, soh que de uma outra forma, você certamente estará ajudando a comunidade. E pode parecer estranho desenvolver algo para um framework, e não para uma linguagem. Mas é questão de costume, não tem perigo algum. |
|
|
Bom se o intuito é desenvolver outro framework, existe este artigo aqui no rubyonbr.org http://rubyonbr.org/articles/2007/04/14/acampamento-de-curiosos/ Neste artigo tem um exemplo simples, após dar uma lida você pode instalar o rails mesmo assim e dar uma olhada no código fonte dele… talvez tenha algo interessante ali Quanto a comunidade Ruby não diversificar as coisas, na minha opinião acredito que seja pelo fato do Ruby pela sua natureza ser livre o bastante p/ vc colocar métodos aonde quiser, enfiar um module aonde quiser… inclusive em String, Fixnum e etc… Então o Rails, se não te ajuda em algo… faz um plugin e pronto. Quanto ao Java ter XYZ frameworks, eu como programador JAVA oque eu vejo é que os frameworks Java não dá tanta liberdade de escolha, por este motivo existem N frameworks, a maioria dos frameworks java são feitos p/ derrubar algum outro. Vide, mentawai, vraptor, webwork… e etc Isso se tornou um ciclo vicioso na comunidade Java, todo mundo fala para não reinventar a roda, porém vivem criando frameworks p/ a mesma coisa. O vilão ai é o “final class”, por não ter como modificar o framework de uma maneira facil, o mais facil é reinventar a roda =/ |
|
|
O modelo de ERB atual não é muito eficiente, principalmente em termos de memória. Em vez de dar um “forward” para um rhtml, o que se faz é carregar o template em memória como string, criar código ruby por trás panos no ERB.new, e dar um eval desse código no contexto de onde você quer tirar as suas variáveis. Esse eval gera uma outra string que você pode então jogar na saída. |
|
|
Uma alternativa mais simples do que o ERB é interpolação de string dentro de um bloco de string (%Q{…}). Assim |
|
|
“Em vez de dar um “forward” para um rhtml, o que se faz é carregar o template em memória como string, criar código ruby por trás panos no ERB.new, e dar um eval desse código no contexto de onde você quer tirar as suas variáveis. Esse eval gera uma outra string que você pode então jogar na saída.” (como faz citação aqui????) Vou tentar fazer isso (primeiro estou estudando Ruby)! Seu eu conseguir fazer bem feito, com certeza eu irei publicar/liberar para a comunidade. Com certeza ninguém vai querer ficar reinventando isso toda vez que tiver que fazer uma renderização. A não ser que 1) seja muito ridículo ou 2) ele esteja usando o Rails que já deve ter isso abstraído. Obrigado pelas dicas pessoal! |
Páginas: 1 2

