You are viewing [info]mojoh3d's journal

Dec. 26th, 2010

Mojolicious 1.0 released!

1.0

Сегодня состоялся долгожданный релиз Mojolicious 1.0

Специально ко дню этого события был обновлен сайт http://mojolicio.us/ и добавлена замечательная разметка документации http://mojolicio.us/perldoc которая позволяет пролистать не только документацию Mojolicious но и основных модулей: http://mojolicio.us/perldoc?File/Find

Если вы еще не ознакомились с этим фреймворком, то вам обязательно стоит это сделать.
Простой в установке:
cpan Mojolicious
или
curl -L cpanmin.us | perl - http://latest.mojolicio.us

Mojolcious не потянет за собой два десятка тяжелых зависимостей - все что нужно для его работы поставляется с Perl.

И не менее простой в старте разработки:

mojo generate lite_app test

Эта команда создаст базовое приложение с которого и следует начать.

Разработчики рекомендуют начинать изучение с Mojolicious::Lite - это надстройка над Mojolicious, которая упрощает все что можно. Предполагается, что программист изучает функционал через Mojolicious::Lite постепенно разворачивая более сложные приложения в Mojolicious.
Специально для легкого старта написан Growing Guide который шаг за шагом проводит экскурсию по основному функционалу Mojolcious.

Отдельная вкусность - тесты.

$t->get_ok('/')->status_is(200)
->element_exists('form input[name="user"]')
->text_is('title' => 'Hello World!');


Таким образом тестируется:
1. Получение страницы по адресу '/' из нашего приложения
2. Возвращен ли HTTP status 200
3. Существует ли элемент который бы соответствовал CSS селектору form input[name="user"]
4. Является ли содержимое тэга title строкой 'Hello World!'

Ссылки:
mojolicio.us
Mojolicious 1.0 released, Sebastian Riedel
Mojolicious 1.0, linux.org.ru
Tags:

Jan. 26th, 2010

Красивые ссылки

Вот вы насоздавали роутов, нарисовали кучу темплейтов и в один прекрассный момент появилась необходимость передавать параметры.
Ну, начнем с того, что получать параметры можно из $self->param('foo').
А вот передавать...

Я сделаю отступление: вы уже должны знать про хелпер <%== url_for('somewhere') %>. Он возвращает ссылку на роут с именем 'somewhere':

$r ->route('/wheresome')
->to('foo#bar')
->name('somewhere')


Так вот, шутка в том, что он возвращает не просто строку, а объект Mojo::URL
И с его помощью очень просто получить полную ссылку вместе с параметрами:
<%== url_for('somewhere')->query('do' => 'job') %>
даст нам '/wheresome?do=job'

Тут стоит заметить, что url_for мощная, но не самая быстрая штука. По этому, если вы собираетесь генерировать список из стопицот ссылок с минимальной разницей, то имеет смысл сгенерировать ссылку 1 раз при помощи url_for, а дальше просто подставлять параметры:

% my $url = url_for('foo');
% for (0..100) {
<a href='<%== $url->query('bar' => $_) %>'%>Foo</a>
% }

Jan. 9th, 2010

Получение файлов



post '/upload' => sub {
my $self = shift;
my $upload = $self->req->upload('price'); # Mojo::Upload

my $filename = $upload->filename; # File name
my $size = $upload->size; # Size
my $fh = $upload->asset->handle; # Filehandle

my $content = join '', <$fh>;

$self->render_text(<<END);
Got file named '$filename'
Size: $size
Content:
$content
END

};



Warning: конкретно этот код еще не проверен в работе, но написан на основе работающего образца.

Jan. 7th, 2010

Mojo: установка на шаред хостинг

*mrfreeman voice* Итак, вот вы принесли мне веб в коробке и хотите запустить его на дешевеньком гостинге, который достался вам в подарок...
Вы рехнулись? нет ничего проще.

Первым делом скачиваем последнюю версию Mojo: http://mojolicious.org/Mojo-latest.tar.gz
достаем из архива нее папку "Mojo-0.999914/lib/" и забрасываем ее прямо на наш любимый хостинг.
Да, да, прямо туда, где у вас будут лежать скрипты.
Теперь на хостинге есть директория типа 'cgi-bin/lib/' а в ней - Mojo, Mojolicious, MojoX. Ну, то есть тот самый веб в коробке, о котором вам столько говорили.

Теперь ведь нужно проверить, не так ли?

#!/usr/bin/perl
use lib 'lib';
use Mojolicious::Lite;

get '/' => 'index';

shagadelic('cgi');

__DATA__
@@ index.html.ep
<!doctype html>
<html>
<head>
<title>Web in the box now!</title>
</head>
<body>
Hello World!
</body>
</html>

Сохраняем сие в cgi-bin/test.cgi, не забываем про текстовый режим и chmod 755
и запускаем на хостинге тест: http://kewlhost.net/cgi-bin/test.cgi

Вуаля?
Нет? Пишите сюда :)