Doomed to Wordpress

Serious Reflections During the Life of Jeremy Fisher

   

Subscribe
Subscribe to a syndicated feed of my weblog, brought to you by the wonders of RSS.

Flavours
There's more than one way to view this weblog; try these flavours on for size.

  • index
  • circa 1993
  • RSS
  • Links
    These are a few links to my other sites.

  • Ставропигиальныя Пластинки
  • Анкылым
  • Русское Шрифтовое Зало
  • Gopher (Proxied)
  • More about Gopher
  •        

    2017/08/17 cidercms

    Так получилось, что мне снова пришлось срочно взяться за поиск подходящей блоггерской CMS на perl.

    CiderCMS оказалась на удивление архитектурно вменяемой вещью, вдохновлённой Zope, то есть тем, что я долго мечтал сделать с нуля самостоятельно. Следовательно, удобной скорее для разработчика, чем для конечного пользователя с админскими правами. Странно, что когда всё заработало, я увидел, что всё удивительно знакомо и получается, что я уже ставил её раньше. Но учитывая насколько сложно было разобраться, странно, что я об этом ничего не помню. Да и сохранившихся следов такой установки (инстансов) ни на одном компе не обнаружил.

    Мне пришлось установить из репозитория Module::Install. Впоследствии оказалось, что там была версия 1.17 и она годится, а вот 1.18 (текущая в CPAN) уже нет. Кроме того, выяснилось, что нужен модуль Module::Install::Catalyst (в дебиане в пакете libcatalyst-devel-perl — у меня был установлен, но крайне сложно было понять, откуда. В perlbrew -

    cpanm -v Catalyst::Devel
    

    Тогда выяснилось, что и Module::Install 1.18 годится. Вообще у Module::Install оказалась такая неприятная черта, что он меняет содержимое каталога и так его и оставляет (добавляет каталог inc). В случае экспериментов с разными версиями модуля/ей создаёт немалую путаницу. Ещё нужна библиотека imlib2 для Image::Imlib2.

    Далее, если верить README, достаточно было сказать perl Makefile.PL && make, запустить тестовый сервер прямо оттуда же (script/cidercms_server.pl) и создать инстанс через веб: http://localhost:3000/system/create. Упомянуто, что тесты создают инстанс и заполняют его, поэтому, чтобы сразу посмотреть на всё готовое, я запустил и make test.

    Для тестов нужно ещё доставить:

    Test::WWW::Mechanize::Catalyst
    DBD::Pg (нужна libpq-dev)
    Catalyst::Plugin::Authentication
    Regexp::Common::Email::Address
    Hash::Merge
    WWW::Mechanize::TreeBuilder
    HTML::TreeBuilder::XPath
    

    Когда тесты не проходили, я обратил внимание на повторяющиеся упоминания DBD::Pg и на то, что создание инстанса по указанному выше урлу выдаёт ошибку подключения к базе. Исследование кода показало, что требуется постгрес, хотя в README об этом не слова.

    Постгресу требуется существующая база cidercms и доступ к ней без логина и пароля, т.е. с правами текущего юзера. Кстати, почему-то параметры подключения хардкодно заданы в CiderCMS::Model::DB, а не в каком-либо конфиге. Странный недочёт для столь аккуратно и модульно сделанной системы.

    Итак, рутом делаем следующее:

    root@acer:~# su — postgres
    postgres@acer:~$ createuser rp
    postgres@acer:~$ createdb -O rp cidercms
    

    Движок создаёт отдельную схему в базе на каждый инстанс, поэтому таблицы находятся не в схеме public и простое \dt ничего не покажет.

    Итак, после установки и настройки постгреса заработал веб-интерфейс и стало проходить больше тестов (но всё равно не все: начиная с какого-то момента тесты падают с ошибкой

    could not copy template textfield.zpt
    

    и далее соответственно

    unknown type: textfield
    

    ).

    permanent link