Página 1 de 1

El mejor Framework Web para Perl

NotaPublicado: 2014-01-03 16:14 @718
por HIRONAKAMURA

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-03 16:42 @737
por explorer
Bueno... es algo subjetivo...

A mí el que más me gusta es el Mojolicious, pero porque tiene muchas más cosas que no solo para hacer web. De hecho, es el que me planteo aprender seriamente en los próximos días.

La verdad, es que hablo desde la ignorancia: no he probado todos. Ni la mitad de la mitad de la mitad ;)

P.D.: Hay muchos más entornos de trabajo web, para Perl. Por ejemplo, Titanium, basado en CGI::Application (otro entorno de trabajo Web). Entra en CPAN y busca por "framework web", y asómbrate.

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-03 17:48 @783
por HIRONAKAMURA
Gracias por responder.

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-04 18:53 @828
por danimera
CGI-Application http://www.cgi-app.org, de por si es el más rápido, flexible y fácil, y además ayudo a muchas personas que lo están usando, y lo conozco bien... Mojo es otro... pero me gusta más Dancer: es moderno y tiene muchas cosas interesantes pero fue muy complicado para mi empezarlo a manejar, entonces solo lo he dejado ahí de práctica hasta instalarlo y portarlo. NO, no, NO... ¡qué dolor para mi...!

Así que si no vas por CGI-Application o Titanium, de una vez pásate a Catalyst, por favor...

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-04 22:40 @986
por explorer
preiddy estaba escribiendo un tutorial de Catalyst, en este mismo subforo (lo ha tenido que aparcar por problemas personales).

Yo me comprometo a hacer uno de Mojolicious, este año :)

¿Te animas a hacer uno de C::A?

Yo he hecho dos aplicaciones con C::A y, al final, me salé que he tenido que escribir mucho código. Aunque en el segundo usé algunos complementos de C::A, aún así tuve que escribir muchas líneas burocráticas para intercambiar información entre subrutinas, o decodificar todos los parámetros que llegan en utf8, o la complicación para generar salida del HTML en utf8 (tener que poner utf8::encode() en cgiapp_postrun() me parece una chapuza, pero no encontré otra forma), o poner un listado en el código de los contenidos estáticos para exceptuarlos de los dinámicos (esto es, seguro, culpa mía).

En fin... es lo que pasa con los entornos de trabajo: hasta que no llegas a hacerte con los procedimientos y nomenclatura, vas dando palos de ciego, hasta que funciona (o crees que funciona).

use CGI::Application::Plugin::AutoRunmode;
use CGI::Application::Plugin::Session;
use CGI::Application::Plugin::Forward;
use CGI::Application::Plugin::Redirect;
use CGI::Application::Plugin::DBH (qw/dbh_config dbh/);

O, por ejemplo, el archivo index.cgi, que es el wrapper de toda la aplicación, aunque uso algo tan cómodo como

use CGI::Application::Dispatch;

tengo que poner una línea de excepción como esta:

# mod_rewrite alters the PATH_INFO by turning it into a file system path, so we repair it.
# necesitamos esto para que las funciones url() nos den un resultado correcto
$ENV{PATH_INFO} =~ s/^$ENV{DOCUMENT_ROOT}// if defined $ENV{PATH_INFO};

O, también, por ejemplo, toda la confusión que rodea a CGI::Session (o CGI::Application::Plugin::Session), que nunca estás seguro de si has usado el procedimiento correcto para crear o leer la sesión.

Quiero decir que, si sigues la documentación de CGI::Session, y analizas con detalle lo que sucede, te das cuenta de que se crean dos registros de sesión, en lugar de uno solo.

Al final, resulta que todo se reduce a un "simple"

# configuración de la sesión de usuario
$self->session_config(
CGI_SESSION_OPTIONS => [ 'driver:File', $query, {Directory => "$DIRECTORIO_WEB/sesiones"} ],
DEFAULT_EXPIRY => '+90d',
COOKIE_PARAMS => { -expires => '+90d' },
SEND_COOKIE => 1,
);

$session = $self->session;

excepto... si la aplicación se ha llamado con la confirmación de registro de un usuario, que hay que poner una excepción porque, claramente, no existe objeto CGI::Session para un usuario que todavía no está registrado:

# Caso de que sea una confirmación,
# el usuario nos manda la id de sesión con la que se registró
if ($self->get_current_runmode() eq 'confirmacion') {
my $sid = $self->param('n');
if ($sid) {
# $self->query->param(-name => CGI::Session->name, -value => $sid, -override => 1);
$query->param(-name => CGI::Session->name, -value => $sid, -override => 1);
}
}

Es posible que Titanium abrevie todos estos procedimientos, pero, no lo conozco.

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-05 10:19 @472
por danimera
Hummmm, interesante...

Imagino que tendrá sus falencias CGI-App, también he tenido que lidiar con uf8 y codificaciones, sesiones, pero :wink: con los plugin me he bastado; me gusta el Authentication, Authorization para el trabajo con ACL...

Me ha tocado hacer un hack horrible para poder usar un fichero de configuración con los datos de la conexión a la db y luego cargarlos en un init con: $self->cfg('db_username'), por ejemplo en una super clase que usé como base de CGI_Application.

Y, claro que sí, yo ya tengo un tutorial que hice de CGI-Application. Lo bueno es que estas cosas las hiciéramos de forma más elegante y moderna, y lo haré a comienzos de este año, por qué no ^^

Re: El mejor Framework Web para Perl

NotaPublicado: 2014-01-07 00:17 @053
por ficovh
HIRONAKAMURA escribiste:Y me pregunto ¿cuál de estos es el mejor o más recomendable?

Dancer, en mi opinión.