Back-End

6 set, 2011

Usando o Catalyst Framework Perl

Publicidade

O Catalyst é um framework livre para o desenvolvimento de aplicações web escritas em Perl, que segue à risca o padrão MVC e suporta um grande número de padrões de desenvolvimento web experimentais. Ele é inspirado por outros frameworks web como Ruby on Rails e Maypole. Ele é primariamente distribuído através do CPAN, que é o repositório oficial para distribuição de bibliotecas e aplicações escritas em Perl.

No artigo de hoje vou ensinar como instalar e imprimir o “Seja Bem Vindo”.

Instalação:

1. Primeiro veja se você tem Perl instalado na sua máquina, no Linux vem por padrão na maioria das distribuições, no Windows você pode instalar o Strawberry, que pode ser baixado no site oficial strawberryperl.com.

2. Para instalar o Catalyst, entre no terminal ou prompt de comando. Depois digite:

$ cpan Catalyst::Runtime Catalyst::Devel

A instalação demora de 5 a 20 minutos, dependendo de sua conexão com a internet.

3. Agora vamos instalar o módulo Template Toolkit no Catalyst, para instalar digite:

$ cpan Catalyst::View::TT

A instalação do desse módulo é rápido.

4. Agora vamos instalar o JSON no Catatalyst, para instalar digite:

$ cpan Catalyst::View::JSON

5. Vamos instalar um módulo importante, que é o DBIx::Class, esse é o principal ORM em Perl, com ele seus problemas com SQL vão se acabar :), vamos instalar os módulos para usarmos o DBIx::Class com Catalyst, então para instalar digite:

$ cpan Catalyst::Model::DBIC::Schema DBIx::Class::Schema::Loader

A instalação pode levar alguns minutos.

Esses são os principais módulos para você criar uma aplicação usando o Framework Catalyst.

Criando aplicação em Catalyst

Agora vamos criar uma aplicação usando o Catalyst. A aplicação vai ter o nome de “MyApp” – estou usando esse nome porque também é usando nos exemplos da documentação do Catalyst que esta no CPAN, mas você pode escolher o nome que quiser.

Entre novamente em seu terminal ou prompt de comando e escolha um diretório de sua preferência, mas aconselho colocar o diretória www do Apache. Lembrando que não é obrigatório instalá-lo, porque o Calayst não precisa deste programa pra rodar.

Agora vamos criar nossa aplicação.

No terminal do Linux digite:

$ catalyst.pl MyApp

No prompt de comandos do Windows digite:

$ catalyst.bat MyApp

Vai ter um retorno parecido com:

created "MyApp"
created "MyApp/script"
created "MyApp/lib"
created "MyApp/root"
created "MyApp/root/static"
created "MyApp/root/static/images"
created "MyApp/t"
created "MyApp/lib/MyApp"
created "MyApp/lib/MyApp/Model"
created "MyApp/lib/MyApp/View"
created "MyApp/lib/MyApp/Controller"
created "MyApp/myapp.conf"
created "MyApp/lib/MyApp.pm"
created "MyApp/lib/MyApp/Controller/Root.pm"
created "MyApp/README"
created "MyApp/Changes"
created "MyApp/t/01app.t"
created "MyApp/t/02pod.t"
created "MyApp/t/03podcoverage.t"
created "MyApp/root/static/images/catalyst_logo.png"
created "MyApp/root/static/images/btn_120x50_built.png"
created "MyApp/root/static/images/btn_120x50_built_shadow.png"
created "MyApp/root/static/images/btn_120x50_powered.png"
created "MyApp/root/static/images/btn_120x50_powered_shadow.png"
created "MyApp/root/static/images/btn_88x31_built.png"
created "MyApp/root/static/images/btn_88x31_built_shadow.png"
created "MyApp/root/static/images/btn_88x31_powered.png"
created "MyApp/root/static/images/btn_88x31_powered_shadow.png"
created "MyApp/root/favicon.ico"
created "MyApp/Makefile.PL"
created "MyApp/script/myapp_cgi.pl"
created "MyApp/script/myapp_fastcgi.pl"
created "MyApp/script/myapp_server.pl"
created "MyApp/script/myapp_test.pl"
created "MyApp/script/myapp_create.pl"
Change to application directory and Run "perl Makefile.PL" to make sure your install is complete

Depois que digitar o comando acima e ter esse mesmo retorno, sua aplicação foi criada com sucesso.

O Catalyst usa o MVC, que é um padrão de arquitetura de software que visa separar a lógica de negócio, da lógica de apresentação, permitindo o
desenvolvimento, o teste e a manutenção isolados de ambos. Você pode ler mais sobre MVC  na wikipedia 

Um pouco sobre os diretórios

  • Diretório MyApp/lib/MyApp/Model, onde vão ficar os modelos;
  • Diretório MyApp/lib/MyApp/View, onde vão ficar os tipos de visualização;
  • Diretório MyApp/lib/MyApp/Controller, onde vão ficar os controles de nossa aplicação;
  • Diretório MyApp/root, onde vão ficar as imagens, javascript e os templates (html);
  • Diretório MyApp/script, contém os arquivos para manipular
    nosso aplicação, como teste, execução e criação de controles, modelos e
    visualização.

Nos exemplos vou usar, por enquanto, apenas os arquivos myapp_server.pl e myapp_create.pl. O arquivo myapp_server.pl executa o aplicativo gerado dentro de um
servidor de teste do Catalyst, que pode ser usado para testes sem recorrer a uma configuração tipo Apache do servidor web. O arquivo myapp_create.pl auxilia a criar os módulos como controller, view e model.

Criando Welcome e executando

Agora vamos criar o nosso primeiro controle, que vai se chamar Welcome. Primeiro acesse o diretório MyApp e digite:

$ cd MyApp

Depois digite:

No Linux:

$ script/myapp_create.pl controller Welcome

No Windows:

perl script/myapp_create.pl controller Welcome

Vai ter um retorno parecido com esse:

exists "/home/lucas/MyApp/script/../lib/MyApp/Controller"
exists "/home/lucas/MyApp/script/../t"
created "/home/lucas/MyApp/script/../lib/MyApp/Controller/Welcome.pm"
created "/home/lucas/MyApp/script/../t/controller_Welcome.t"

Vai criar o módulo Welcome.pm no diretório MyApp/lib/MyApp/Controller. Agora abra o arquivo Welcome.pm com algum editor de sua preferência.

O arquivo vai conter o código:

    package MyApp::Controller::Welcome;
    use Moose;
    use namespace::autoclean;

    BEGIN { extends 'Catalyst::Controller'; }

    =head1 NAME

    MyApp::Controller::Welcome - Catalyst Controller

    =head1 DESCRIPTION

    Catalyst Controller.

    =head1 METHODS

    =cut

    =head2 index

    =cut

    sub index :Path :Args(0) {
        my ( $self, $c ) = @_;

        $c->response->body('Matched MyApp::Controller::Welcome in Welcome.');
    }

    =head1 AUTHOR

    Lucas Moraes,,,

    =head1 LICENSE

    This library is free software. You can redistribute it and/or modify
    it under the same terms as Perl itself.

    =cut

    __PACKAGE__->meta->make_immutable;

    1;

Agora vamos executar nosso programa.

No Linux:

$ ./script/myapp_server.pl

No Windows:

perl script/myapp_server.pl

Vai retornar isso:

[debug] Debug messages enabled<br />[debug] Statistics enabled
[debug] Loaded plugins:<br />.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader  0.30                                       |
'----------------------------------------------------------------------------'
[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::HTTP"
[debug] Found home "/home/lucas/MyApp"
[debug] Loaded Config "/home/lucas/MyApp/myapp.conf"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| MyApp::Controller::Root                                         | instance |
| MyApp::Controller::Welcome                                      | instance |
'-----------------------------------------------------------------+----------'
[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | MyApp::Controller::Root              | default      |
| /end                 | MyApp::Controller::Root              | end          |
| /index               | MyApp::Controller::Root              | index        |
| /welcome/index       | MyApp::Controller::Welcome           | index        |
'----------------------+--------------------------------------+--------------'
[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /index                               |
| /                                   | /default                             |
| /welcome                            | /welcome/index                       |
'-------------------------------------+--------------------------------------'
[info] MyApp powered by Catalyst 5.80032
You can connect to your server at http://lucas-satellite-a200:3000

Para acessar a página de teste, abra seu navegador e digite o endereço acima. No meu caso: http://localhost:3000.

Você vai ver uma pagina parecida com essa na imagem:

Para acessar a página welcome, digite no seu navegador:

http://localhost:3000/welcome">http://localhost:3000/welcome

Você vai ver esse resultado:

Matched MyApp::Controller::Welcome in Welcome.

É o que está escrito no código do módulo Welcome.pm:

$c->response->body('Matched MyApp::Controller::Welcome in Welcome.');

Agora troque esta mensagem por por outra de sua preferência no lugar de “Matched MyApp::Controller::Welcome in Welcome.”, como por
exemplo, “Seja Bem Vindo”.

Depois da mudança execute novamente o arquivo script/myapp_server.pl para compilar novamente sua aplicação.

Esse é o fim da primeira parte, você pode encontrar mais informações nos links abaixo:

Muito obrigado e espero que você tenha gostado!