Фрэймворк CatalystЯзык перл незаслуженно считается устаревшим. Да, возможно, интерпретатор версии 5 и был выпущен почти 15 лет назад, но все это время язык эволюционировал, и не стоит писать на нем так, как делали это 15 лет назад. Сегодня на рынке властвуют фрэймворки и понятие быстрой разработки (Rapid Development), чего стоит тот же Ruby on Rails, у Perl тоже есть элегантный фрэймворк для быстрой разработки веб-приложений и имя ему Catalyst.

Установка каталиста

Установить каталист проще всего воспользовавшись утилитой cpan, которая отвечает за взаимодействие с репозиторием CPAN. А CPAN — это главное хранилище модулей для perl.

Для установки нужно выполнить две команды:
 cpan -i Task::Catalyst
 cpan -i Catalyst::Devel
Утилита cpan сама проверит зависимости и предложит установить недостающие пакеты, поэтому ждем пару минут, подтверждаем список пакетов и отправляемся пить чай.

CPAN

При первом запуске утилита cpan задаст вам несколько вопросов, почти везде можно смело нажимать enter, выбирая стандартные варианты, стоит только обратить внимание на прокси сервер, а также ответить на вопрос
Policy on building prerequisites (follow, ask or ignore)?
первым вариантом — follow, если выбрать вариант ask, то придется много и часто нажимать Y, что весьма утомительно.
Если же вы ошиблись или хотите изменить настройки, то можно просто удалить директорию ~/.cpan/ и при следующем запуске ответить на те же вопросы. Или же изменить их через консоль. вот пример отключения подтверждения зависимости пакетов:
o conf prerequisites_policy follow
o conf commit
Если во время установки возникли проблемы с прохождением тестов, то можно заставить cpan установить их даже в этом случае. Для этого стоит применить силу (force), то есть добавить ключ -f в команду установки.

Первое приложение

В идеале, для работы с Catalyst разработчик уже должен обладать определенным багажом знаний. Например нужно знать архитектуру MVC, уметь работать с ORM и писать шаблоны для Template Toolkit, но так как серия статей о каталисте, а не сопутствующих технологиях, то мы будем рассматривать все эти понятия поверхностно. Начнем с MVC.

Model-View-Controller

Если абстрагироваться от реализаций этой техники, то главная цель — это разделение данных (модель) и интерфейса (представление), а для их взаимодействия используется посредник (контроллер). Таким образом получение данных идет только в модели, а отображение только в представлении, все остальное находится в контроллере. Следование этой логике и называется MVC.

Генерация каркаса

В программировании существует понятие кодогенерации — это когда фрэймворк берет на себя рутинные задачи по добавлению элементов в проект, например создает файлы для нового конроллера или весь первичный каркас приложения. Для начала разработки воспользуемся именно этим приемом для создания проекта. Для этого выполним скрипт catalyst.pl и передадим ему название нашего проекта:
$ catalyst.pl test
created "test"
created "test/script"
created "test/lib"
created "test/root"
created "test/root/static"
created "test/root/static/images"
created "test/t"
created "test/lib/test"
created "test/lib/test/Model"
created "test/lib/test/View"
created "test/lib/test/Controller"
created "test/test.conf"
created "test/lib/test.pm"
created "test/lib/test/Controller/Root.pm"
created "test/README"
created "test/Changes"
created "test/t/01app.t"
created "test/t/02pod.t"
created "test/t/03podcoverage.t"
created "test/root/static/images/catalyst_logo.png"
created "test/root/static/images/btn_120x50_built.png"
created "test/root/static/images/btn_120x50_built_shadow.png"
created "test/root/static/images/btn_120x50_powered.png"
created "test/root/static/images/btn_120x50_powered_shadow.png"
created "test/root/static/images/btn_88x31_built.png"
created "test/root/static/images/btn_88x31_built_shadow.png"
created "test/root/static/images/btn_88x31_powered.png"
created "test/root/static/images/btn_88x31_powered_shadow.png"
created "test/root/favicon.ico"
created "test/Makefile.PL"
created "test/script/test_cgi.pl"
created "test/script/test_fastcgi.pl"
created "test/script/test_server.pl"
created "test/script/test_test.pl"
created "test/script/test_create.pl"
Change to application directory and Run "perl Makefile.PL" to make sure your install is complete

Теперь переходим в директорию проекта и запускаем сервер каталиста для разработки, который находится в script/myapp_server.pl и, в нашем случае, это будет script/test_server.pl. Для разработки удобно запускать его с ключом -r, что заставит его автоматически перезапускаться при изменении файлов проекта.

После запуска мы должны увидеть следующий ответ и предложение подключиться к 3000 порту на локальном сервере.
sontan@onca:~/catalyst/test$ ./script/test_server.pl -r
[debug] Debug messages enabled
[debug] Statistics enabled
[debug] Loaded plugins:
.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader  0.23                                       |
| Catalyst::Plugin::Static::Simple  0.21                                     |
'----------------------------------------------------------------------------'

[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::HTTP::Restarter"
[debug] Found home "/home/sontan/catalyst/test"
[debug] Loaded Config "/home/sontan/catalyst/test/test.conf"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| test::Controller::Root                                          | instance |
'-----------------------------------------------------------------+----------'

[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | test::Controller::Root               | default      |
| /end                 | test::Controller::Root               | end          |
| /index               | test::Controller::Root               | index        |
'----------------------+--------------------------------------+--------------'

[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /default                             |
| /                                   | /index                               |
'-------------------------------------+--------------------------------------'

You can connect to your server at http://localhost:3000

Открыв в браузере предложенный адрес http://localhost:3000 мы должны увидеть приветствие:

Стартовое окно Catalyst

Поздравляю! У нас все получилось. Теперь мы готовы к написанию своего первого приложения, но об этом в следующий раз…
2951 просмотр
нет комментариев
Только зарегистрированные пользователи могут оставлять комментарии.
Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
© sontan.name, 2008–2012