MentaOnRuby 0.5.0 - Released as Gem

40 respostas
saoj

Acabei de disponibilizar a versão 0.3b do MentaOnRuby que nada mais é que um port do Mentawai para Ruby + Merb.

Com certeza precisarei de ajuda para viabilizar esse projeto, logo se alguém tem interesse em aprender Ruby talvez essa seja uma boa oportunidade.

Se alguém estiver interessado em entrar para o time de commiters do MentaOnRuby, por favor entrar em contato via private message.

http://blogs.mentaframework.org/posts/list/15.page

Comentários serão bem-vindos, com exceção dos clássicos: “é inútil, é uma merda, cadê os testes, já tem RoR, vc está perdendo tempo, etc.”

40 Respostas

cmilfont

Parabéns Sérgio, mas o MentaOnRails tem estratégia REST por default como o Rails2?

Rafael_Steil

Qual o intuito desse projeto?

plentz

.

(conteúdo suprimido, pois meu comentário não é bem vindo.)

eliziario

when once you proceed down the dark path, forever will it dominate your destiny.

Daniel_Quirino_Olive

Bingo! \0/

fmeyer
peerless

não sei pq mas este topico me lembrou do seu-barriga nos seriados do chapolim! hehehehe…

saoj, cara legal… quando eu tiver mais tempo vou dar uma olhada com calma no seu projeto, vamos ver do que se trata! :slight_smile:

saoj

Eu demorei um pouco para entender o que é REST. Esse artigo aqui me ajudou bastante: http://www.peej.co.uk/articles/restfully-delicious.html

REST é uma forma de fazer webservices usando XML com HTTP, mas não apenas isso como esse artigo explica muito bem. Pelo que entendi um framework não tem como implementar REST. Vc é que faz isso na sua aplicação. O que o framework pode fazer é oferecer algumas facilidades para se trabalhar com XML.

Se eu fosse implementar uma aplicação REST eu usaria JSP como meu template de XML, ou seja, daria um forward para um JSP que geraria meu Restful XML. Mas não sei se há outras maneiras melhores de atacar esse problema. Usando XML renderers, que é o default para AJAX, não me parece legal para REST.

Talvez aprender Ruby, talvez aprender Merb, talvez ter uma idéia de como é um projeto em Ruby se comparado a um projeto Java. Quais as vantagens e desvantagens, etc e tal. Meu conhecimento de Ruby é limitado, logo espero com esse projeto (e com os commiters que se juntarem a ele) que eu possa aprender mais sobre Ruby.

Do or do not. There is no try. :slight_smile:

Eu deixo a parte de dominar o mundo para o RubyOnRails. Que tal um objetivo menos ambicioso como aprender Ruby, investigar um outro paradigma e conhecer novas pessoas?

Em breve lançarei mais um projeto open-source. Será uma agenda de telefones feito em Java para vc rodar no command line.

Mauricio_Linhares

Bem, iniciando os comentários Sérgio, você deveria, urgentemente, escrever um pet project usando Rails, vai lhe poupar um bocado do trabalho e pode até dar idéias melhores, além de mostrar "como" se escreve em Ruby.

Continuando os comentários, vamos aos seus exemplos:

[code=ruby]class Hello < Action

def execute
  username = input.get("username")
  output.put("hi", "Hello #{username.upcase}")
  :SUCCESS
end

end

Isso é Java, não Ruby, em vez de ser input.get("username"), deveria ser input[:username] e o output não deveria existir, todas as variáveis de instância da action deveriam ser copiadas pra view, assim como o Merb e Rails fazem. Outra coisa, o :SUCCESS também deveria ser desnecessário, além do que, não se usa maiúsculas em tudo pra nada em Ruby que não seja uma constante, então não use esse símbolo só com letras maiúsculas, use só com menúsculas e seria bom assumir que se a action não retorna nada, ela é um ":success", fazer com que o usuário sempre diga o óbvio é perda de tempo.

Então esse código deveria ser algo assim:

[code=ruby]class Hello < Action

def execute
  @hi = "Hello #{input[:username].upcase}"
end

end

Continuando, isso é assustador:

&lt;h2&gt;Hello MentaOnRuby&lt;/h2&gt; &lt;h3&gt;&lt;%= "#{action.output.get('hi')}" %&gt;&lt;/h3&gt;

Mais uma vez, isso é Java, não tem nada de Ruby, em Rails ou no próprio Merb seria simplesmente:

&lt;h2&gt;Hello MentaOnRuby&lt;/h2&gt; &lt;h3&gt;&lt;%= @hi %&gt;&lt;/h3&gt;

Outra coisa, portar um framework Java pra Ruby pra aprender Ruby é uma péssima idéia, porque você vai querer portar ele como você fazia em Java (e é exatamente isso que você está fazendo) e isso não faz o menor sentido, o melhor é você começar a ver como se escreve aplicações usando Rails e Merb e depois ver o que o Mentawai tem de interessante pra ser levado pra Ruby.

saoj

Obrigado pelos comentários, Maurício. Serão comentários assim que me ajudarão a aprender mais Ruby e melhorar esse projeto.

Com certeza um conhecimento de Rails me dará algumas idéias para esse projeto. Como não tenho esse conhecimento terei que aprender na marra e/ou com a ajuda de outros commiters.

Concordo, é que eu quiz deixar a coisa parecida com o Mentawai, mas não custa colocar um method [] no input para fazer isso.

Pode até existir, mas tem que ter a opção de ignorá-lo. Vou ter que pensar como fazer isso. Ainda não sei, mas em Ruby tudo é possível. :slight_smile:

Tem razão!

Verdade. Resolvendo o problema acima de colocar tudo como variável de instancia do controlador isso será resolvido por tabela.

Não acho que seja uma péssima idéia. Só nesse post aqui já aprendi várias coisas. Como falei meu conhecimento de Ruby é limitado. Espero com esse projeto aprender mais.

Obrigado pelo comentário. Seria um prazer ter vc no time de commiters, Maurício.

urubatan

saoj, eu resolvi aprender Ruby On Rails em vez de Grails quando começei nisto apenas para evitar de fazer o que tu esta fazendo agora …
ou seja, tu ta programando Java em Ruby, o que é uma péssima ideia …
tente utilizar por algum tempo um framework Ruby (não precisa ser o Rails existem outros) para aprender os padrões da linguagem antes de tentar criar um framework nesta linguagem …

o caso do rails versus grails no meu caso foi por que o Groovy é muito parecido com Java, o que iria fazer com que eu programasse em Java usando Groovy, o que seria uma péssima idéia …
então escolhi algo bem diferente para facilitar a transição …
antes de escrever um framework em Ruby tu tem que aprender os padrões da linguagem, pare evitar de criar um frankenstein …

cmilfont

Bem, eu não sei o que você quer dizer como “implementar” REST, mas o Rails2 por exemplo já faz isso de graça no controlador, não tenho que implementar nada.
Simplesmente eu tenho os recursos disponíveis dependendo da extensão.

class UsuariosController < ApplicationController
  # GET /usuarios
  def index
    @usuarios = Usuario.find(:all)

    respond_to do |format|
      format.xml  { render :xml => @usuarios.to_xml(:include => :perfil, :except => :perfil_id) }
      format.json { render :json => @usuarios.to_json(:include => :perfil, :except => :perfil_id) }
    end
  end
...
plentz

que tal ler o pickaxe antes de sair escrevendo código porai?

Mauricio_Linhares

De qualquer forma, um bom lugar pra se aprender o “jeito” de se escrever Ruby (e Rails) é esse aqui -> http://www.therailsway.com/

saoj

que tal ler o pickaxe antes de sair escrevendo código porai?

Me desculpe, plentz! Sorte minha é que a coisa ainda está na versão 0.3b. Isso quer dizer que ainda pode e deve melhorar bastante até ser lançada a primeira versão stable. E eu já li esse livro. Mas se mesmo assim vc achou o código uma merda me desculpe. Vou tentar melhorá-lo antes de lançar a versão 1.0. Geralmente as coisas quando são lançadas nem sempre ficam perfeitas de cara. É com muito trabalho e dedicação que a coisa pode se aprimorar. Tanto é que muitos frameworks são totalmente refeitos na versão 2.0. Perdoe-me!

plentz

“já leu a minha assinatura hoje?”

saoj

Quando eu crescer talvez eu seja que nem vc, Plentz. Daí eu pararei de dar desculpas esfarrapadas e começarei a apresentar resultados concretos e projetos bem sucedidos.

Obrigado por me lembrar disso!

cv1

saoj, parabens.

aleck

Parabens pela iniciativa, creio que o intuito do projeto é valido e acredito que uma otima foma de aprender uma nova linguagem é portar aplicações que já conhecemos.

Independente dos comentarios dos outros membros do forum que sao opinioes pessoais e devem ser respeitadas, acredito que todos que embarcarem neste projeto tem uma otima oportunidade de aprender.

Garanto que e muito melhor do que construir uma calculadora ou um cadastro de usuarios.

[]'s e sorte no projeto.

davidbuzatto

Parabéns!

Mauricio_Linhares

Sérgio, ainda sobre o assunto, acho que é interessante você perceber que o Merb não é como a API de servlets, ele é um framework MVC completo, fazer o que você está fazendo não faz muito sentido, é como se você escrevesse um VRaptor dentro do Mentawai. Acho que seria mais válido você dar uma olhadinha melhor no Merb e no Rails e ver quais as funcionalidades que o Mentawai tem e eles não tem e fazer desse MentaOnRuby um plugin que pudesse ser adicionado a eles.

Duvido muito. Especialmente se a idéia for realmente portar a aplicação, acho que portar a idéia ou funcionalidades é muito mais válido. Quando você pensa em portar uma aplicação você vai, invariavelmente, incorrer no problema de estar simplesmente escrevendo a mesma coisa em outra linguagem, vai estar fazendo apenas tradução de código e isso não vai lhe ensinar muita coisa, pior, vai ensinar errado.

Agora, pegar uma aplicação que você fez ou conhece e refazer as funcionalidades dela em outra linguagem ou usando outros frameworks é extremamente válido, porque aí você vai procurar escrever a nova aplicação usando o máximo que puder da nova linguagem ou ferramenta, aí sim você vai estar aprendendo, porque você não vai estar escrevendo alemão pensando em português.

Marcio_Duran

:thumbup: Iniciativas são sempre bem vindas, quanto ao erro são sempre transformação constantes de idéias e contradições em busca de um objetivo, à aproximação do que pode vir a ser , o que pensamos que é certo.

:thumbup: “O que é o ser , senão o próprio domínio de sua existência pela descoberta do seu conhecimento”

Kenobi

Bacana SAOJ e válido lembrar que ele foi humilde suficiente para falar sobre seu conhecimento sobre a linguagem e sua intenção com o projeto.

luiz_ross

Pois é Kenobi, diferente de outros que estão mais preocupados em tacar pedra no cara. :?

L

Primeiro, foi lançado esse comentário:

Depois o Kenobi lança outra mensagem:

Peraí, como assim intenção com o projeto? Não vi nenhum post dizendo claramente isso!

IMHO, usar os mesmos objetivos do Mentawai no Java para o Ruby não daria certo. Em Java, dar à comunidade um framework web em que tudo é feito sem configurações XML, apenas código Java (e propondo com isso ser mais fácil), já garante um lugar ao sol. Em Ruby, fazer a mesma coisa seria simplesmente concorrer com o Rails (que não usa configuração XML e é mais fácil) sem propor nada de novo.

Esta faltando ao MentaOnRuby um diferencial pra que ele possa existir.

Mauricio_Linhares

Acho que o Sérgio deixou isso bem claro -> http://www.guj.com.br/posts/list/82857.java#441786

R

Parabéns, Sérgio.

Apesar da Santa Inquisição, gostaia que você desse feedbacks conforme for avançando.

[]´s

PS: Mengão Campeão (de novo)!!!

saoj

Concordo com vc. Concorrer com Rails é loucura. Não porque ele está muito difundido como o Struts em Java, mas porque ele é realmente um framework excelente.

Isso mais ser full-stack sempre foram a bandeira do Mentawai mesmo, desde 2005. Mas entendo que o mundo Ruby é algo totalmente diferente e um nível mais elevado/avançado.

Acho que quando vc disse “existir” vc quiz falar “ser relevante”. Existir ele pode, mesmo que poucas pessoas usem ele.

A questão de encontrar um diferencial é bem complicado. O Rails encontrou um belo diferencial na linguagem ruby, que permitiu a construção de um framework verdadeiramente full-stack, active record, mágicas metaprogramadas, etc. Qualquer outro framework que queira entrar no mundo Ruby vai ter que se contentar em fazer as coisas de outra maneira, mas daí a “introduzir um novo diferencial ou paradigma” acho possível, mas difícil.

Me corrijam se eu estiver errado, mas o Spring introduziu algo de novo ou simplesmente facilitou e simplificou o desenvolvimento de sistemas, principalmente os distribuídos, que antes eram feitos com EJB? Talvez tenha introduzido algo de novo, mas eu sinceramente não sei/não me lembro.

Para um framework ganhar relevância ele deve sim introduzir algo de novo, mas mais importante do que isso ele deve ser simples, bem documentado, bem exemplificado, bem suportado, etc. O Spring tem tudo isso.

O Merb por exemplo tem documentação próxima de zero. Existem milhares de maneiras de fazer a mesma coisa, milhares de detalhes, que se não forem bem simplificados e documentados, irão fazer com que o framework nunca ganhe a relevância merecida, por melhor que ele seja.

Luiz_Aguiar

Vai começar tudo de novo né!?

fmeyer

saoj:
Concordo com vc. Concorrer com Rails é loucura. Não porque ele está muito difundido como o Struts em Java, mas porque ele é realmente um framework excelente.

Entao pra que isso? aprender ruby? existem maneiras mais dignas pra isso.

Alem de tudo, monolitico, cheio de coisas estaticas pra todo lado e uma bomba se for preciso escalar

saoj:

Acho que quando vc disse “existir” vc quiz falar “ser relevante”. Existir ele pode, mesmo que poucas pessoas usem ele.

A questão de encontrar um diferencial é bem complicado. O Rails encontrou um belo diferencial na linguagem ruby, que permitiu a construção de um framework verdadeiramente full-stack, active record, mágicas metaprogramadas, etc. Qualquer outro framework que queira entrar no mundo Ruby vai ter que se contentar em fazer as coisas de outra maneira, mas daí a “introduzir um novo diferencial ou paradigma” acho possível, mas difícil.

Me corrijam se eu estiver errado, mas o Spring introduziu algo de novo ou simplesmente facilitou e simplificou o desenvolvimento de sistemas, principalmente os distribuídos, que antes eram feitos com EJB?

Para um framework ganhar relevância ele deve sim introduzir algo de novo, mas mais importante do que isso ele deve ser simples, bem documentado, bem exemplificado, bem suportado, etc. O Spring tem tudo isso.

O Merb por exemplo tem documentação próxima de zero. Existem milhares de maneiras de fazer a mesma coisa, milhares de detalhes, que se não forem bem simplificados e documentados, irão fazer com que o framework nunca ganhe a relevância merecida, por melhor que ele seja.

Ou seja, denovo o Sergio ta recriando a roda quadrada por esporte

saoj

Obrigado pelo feedback, Fernando. Não concordo muito, mas respeito e aceito a sua opinião…

Rubem_Azenha

Senti uma pontinha de inveja?

F

Ta jogando alcool pra ver a explosão?

Rubem_Azenha

Always 8)

D

saoj, já num pensou em criar um framework baseado em Django?
Ando trabalhando com ele em projetos pessoais e to começando a entender pq ele está sendo tão falado.

Emerson_Macedo

Cara, acho que se passar mais de 3 meses sem um flame com o sérgio eu vou perder umas boas risadas dessas theads. Afinal, nunca passa mais de 3 meses sem o Sérgio lançar um framework Menta*

Não vou alimentar a discussão mas rir eu vou, e muito :smiley:

R

emerleite:
Cara, acho que se passar mais de 3 meses sem um flame com o sérgio eu vou perder umas boas risadas dessas theads. Afinal, nunca passa mais de 3 meses sem o Sérgio lançar um framework Menta*

Não vou alimentar a discussão mas rir eu vou, e muito :smiley:

Se o que vc escreveu não é um exemplo de como alimentar um flame… sinceramente não sei como seria.

[]´s

Emerson_Macedo

Seria falando mau do framework ou falando hiper-bem, o que não farei uma coisa nem outra. :smiley:

saoj

http://blogs.mentaframework.org/posts/list/16.page

:arrow: []= e [] para input, output, session, application and cookies. (valeu Maurício)

:arrow: MentaTags (t_out = a primeira!)

:arrow: Suporte para custom tags

saoj

Depois de muito quebrar a cabeça com Merb, descobri essa coisa maravilhosa chamada Rack.

Agora a versão 0.5.0 pode ser facilmente instalada como um gem.

Mais detalhes nesse no blog: http://blogs.mentaframework.org/posts/list/18.page

Comentários serão bem-vindos, principalmente os do Maurício. :slight_smile:

Criado 23 de fevereiro de 2008
Ultima resposta 17 de mar. de 2008
Respostas 40
Participantes 23