MentaOnRuby 0.5.0 - Released as Gem

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.”

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

Qual o intuito desse projeto?

.

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

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

Bingo! \0/

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:

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.

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(&quot;username&quot;)
  output.put(&quot;hi&quot;, &quot;Hello #{username.upcase}&quot;)
  :SUCCESS
end

end[/code]

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 = &quot;Hello #{input[:username].upcase}&quot;
end

end[/code]

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.

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.

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 …

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
...

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

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

que tal ler o pickaxe antes de sair escrevendo código porai?[/quote]

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!

“já leu a minha assinatura hoje?”

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!

saoj, parabens.

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.