22.06.2009 23:49
Язык перл незаслуженно считается устаревшим. Да, возможно, интерпретатор версии 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 мы должны увидеть приветствие:

Поздравляю! У нас все получилось. Теперь мы готовы к написанию своего первого приложения, но об этом в следующий раз…
1190 просмотров
нет комментариев