Autofaucets.ru - автоматический сборщик криптовалюты с кранов!

SAPE ON RAILS. Интеграция PHP-кода SAPE.RU в Ruby on Rails приложение.

Posted by Cooper Mon, 23 Apr 2007 12:52:00 GMT

Наверняка уже многие счастливые обладатели сайтов, разработанных на php или html, установили и с удовольствием пользуются системой купли-продажи ссылок sape.ru. Поскольку мой блог использует Typo движок, написанный на Ruby on Rails, то конкретных инструкций по размещению sape-кода мне найти не удалось ни на форуме sape.ru, ни в Интернет. Поэтому пришлось провести небольшое исследование по способам интеграции Rails и PHP и затем реализовать на основе собранного материала Typo sidebar plug-in.

Первое, что я сделал, это вынес php-код для отображения ссылок, в отдельный файл с именем sape1.php. Этот файл был сохранен в директории /var/www/websites/mysite/public

Как показали первые эксперименты с sape, большая часть проблем с отображением ссылок продавцов была связана с тем, что невозможно определить внутри php-скрипта текущую страницу сайта или доменное имя. Поэтому далее в этом скрипте явно были прописаны параметры, в обычных условиях получаемые из контекста web-сервера: ‘request_uri’, ’host’. А также изменён параметр ’charset’ на UTF-8 в соответствии с используемой кодировкой страниц моего сайта. Значение ‘request_uri’ дополнительно преобразовывалось функцией urlencode() для корректной интерпретации символов кириллицы в URL.


<?php
    define('_SAPE_USER', '999999999999999999999999999999999');
    require_once('/var/www/websites/mysite/'._SAPE_USER.'/sape.php');
    $o['request_uri'] = $_GET['uri'];
    $o['request_uri'] = str_replace('%2F', '/', urlencode($o['request_uri']) );
    $o['host']    = 'cooper.ezlibrary.com';
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);
    echo $sape->return_links();
?> 

После изменений в php-коде остается создать Sape sidebar plugin , где основная концепция реализована в файле content.rhtml:

<% command = '/usr/local/bin/php -q /var/www/websites/mysite/public/sape1.php uri=' + request.env["REQUEST_URI"].to_s %>
<%= `#{command}` %>

Через административный интерфейс добавляем новый plug-in на sidebar. С появлением новых запросов на размещение в sape.ru:

… они появляются в sidebar области Typo блога:

Так что те, кто ещё не присоединился, могут попробовать в действии систему купли-продажи ссылок Sape.ru теперь и на Ruby On Rails сайтах.

* * UPDATE * *

описанная выше методика была протестирована на системе RedHat EL3 c PHP 4.3.2 Позже возникла необходимость перейти на PHP 5.1 и оказалось, что подход к интеграции php-sape клиента в этом случае немного отличается.

При запуске php-скрипта public/sape1.php из typo-окружения элемент массива $_GET[‘uri’] не инициализируется значением, в результате ссылки на странице не видны. Для исправления ситуации вместо $_GET[‘uri’] нужно использовать $argv[1], также uri имеет уже закодированный вид, так что убираем строку с функцией urlencode():


<?php
    define('_SAPE_USER', '999999999999999999999999999999999');
    require_once('/var/www/websites/mysite/'._SAPE_USER.'/sape.php');
    // replace $_GET[‘uri’] with $argv[1]
    $o['request_uri'] = $argv[1];
    // remove uri encoding
    $o['host']    = 'cooper.ezlibrary.com';
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);
    echo $sape->return_links();
?> 

А в typo-плагине откорректировать файл views/content.rhtml опустив название параметра uri и убрав ключ -q:


<% command = '/usr/local/bin/php /var/www/websites/mysite/public/sape1.php ' + request.env["REQUEST_URI"].to_s %>
<%= `#{command}` %>

Posted in , , ,  | Tags , , , , ,  | 9 comments

TYPO 4.1. Что нового?

Posted by Cooper Tue, 20 Mar 2007 09:13:00 GMT

Где-то с конца прошлого года казалось, что проект вот-вот закончит свое существование. Об этом можно было судить потому, что разработка не велась несколько месяцев, официальный сайт проекта был недоступен в течение трёх месяцев без каких-либо официальных объяснений. Не была известна дата следующего официального релиза и, если говорить, в общем и целом - будущее проекта. На этом фоне многие приверженцы Typo начали переходить на Mephisto или другие blog-engines.

И вот, наконец, вышел очередной релиз Typo 4.1 , в котором реализовано несколько интересных вещей:

  • Поддержка Ruby on Rails 1.2.
  • Внесены функциональные и эргономические изменения в раздел администрирования блога (back office).
  • Добавлена поддержка интернационализации и локализации, используя localization плагин. Из поддерживаемых языков в данном релизе кроме английского языка доступен ещё французский.
  • Комментарии и trackbacks по умолчанию модерируемы.
  • Исправлено множество ошибок и проведено улучшение кода.
  • Поддержка RSS для тэгов и категорий.
  • Плагины используют механизм Rails plugin.

Typo 4.2 по прогнозам должно быть выпущено через два месяца, и судя по планам этот релиз будет выглядеть также впечатляюще:

  • Поддержка пользовательских ролей и процесса публикации статьи.
  • Возможность реализации на одной копии Typo множества блогов.
  • Переход с модуля Localization на Globalization для поддержки i18n и l10n.
  • Интеграция предложенных разработчиками патчей как плагинов.
  • Завершение улучшения административного раздела блога.
  • Перевод интерфейса на новые языки.

Posted in , ,  | Tags , , , , , ,  | no comments