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!