[SP-pm] [Duvida] Sistema MVC com routing dinamico usando HTTP::Server::Simple::CGI e Xslate!

Eden Cardim edencardim at gmail.com
Wed Oct 19 19:24:50 PDT 2011


>>>>> "Rafael" == Rafael Silveira <design.silveira em gmail.com> writes:

    Rafael> Galera, eis me aqui de novo!
    Rafael> Como estão!

    Rafael> Pode parecer um tanto estranho eu querer usar
    Rafael> HTTP::Server::Simple::CGI e Xslate; Criar um ambiente MVC do
    Rafael> zero; Quando se tem Catalyst ou Dancer.  Porem é aquilo, eu
    Rafael> estou querendo aprender perl para web, e o melhor jeito de
    Rafael> se fazer isso (no meu ponto de vista), é criar um sistema
    Rafael> MVC utilizando essas libs.

    Rafael> Queria saber se é possível usar o modulo
    Rafael> HTTP::Server::Simple::CGI, para carregar classes
    Rafael> (controllers) de forma mvc.

Não, esse módulo é uma implementação server-side de HTTP, mas você pode
integrar ele com outros módulos que façam isso.

    Rafael> Por exemplo:

    Rafael> http://localhost:3000/Postagens/listagem

    Rafael> A url acima, faz um request para meu App usando
    Rafael> HTTP::Server::Simple::CGI que está escutando na porta 3000.
    Rafael> Ele le a uri (Postagens/listagem), parseia ela, e define que
    Rafael> Postagens é meu módulo (controller) e listagem é o método do
    Rafael> meu módulo.

Só toma cuidado com esse tipo de coisa, que é bem fácil você abrir uma
falha de segurança. A depender de como você implementou, sua app pode
estar aberta à execução de subrotinas arbitrárias.

    Rafael> Resumindo, faço isso dinamicamente, sem definir rotas.

    Rafael> Caso passe só Postagens na uri, ele chama o metodo default
    Rafael> (index por exemplo).

    Rafael> Gostaria tbm de usar moose para estruturar meus módulos (controllers).

    Rafael> Mas não sei nem por onde começar.

    Rafael> Talvez uma estrutura tipo.

    Rafael> /root
    Rafael>      /lib
    Rafael>      /config
    Rafael>            defaults.yml
    Rafael>            database.yml
    Rafael>      /controllers
    Rafael>          Postagens.pm
    Rafael>      /views
    Rafael>          Default.tt
    Rafael>      /models (nao to qrendo ver isso no momento)
    Rafael>      app.pl

    Rafael> Sugestões?

Recomendo você usar o padrão de módulos do cpan pra estrutura de
arquivos da sua app. Assim qualquer desenvolvedor perl minimamente
decente vai saber onde olhar dentro da árvore de source. É algo da
forma:

        lib/     -- módulos
        t/       -- testes
        script/  -- executáveis
        Makefile.PL ou dist.ini ou Build.PL -- listagem/instalação de dependências
        MANIFEST -- listagem de todos os arquivos distribuíveis
        Changes  -- log de mudanças entre releases
        README   -- primeiro arquivo que alguém vai ler

É bem recomendável que você use o Dist::Zilla porque ele facilita uma
porção de coisas pra você na hora de estruturar isso.

    Rafael> Realmente eu gostaria de fazer dessa forma, para depois
    Rafael> aprender a usar um Catalyst, Dancer.

Eu acho perda de tempo. Vai ser mais rápido você aprender a estruturar
uma aplicação depois de você aprender a usar algo como o Catalyst e
depois olhar pro source pra ver como é implementado. Digo Catalyst
especificamente porque o Dancer é bem ruinzinho em termos da estrutura
interna e qualidade do código em geral. Outro módulo que vale a pena uma
olhada na doc e no source é o Plack.

-- 
Eden Cardim
Software Engineer
http://bit.ly/edencardim
http://twitter.com/#!/edenc
+55 73 9986-3963


More information about the SaoPaulo-pm mailing list