Tagged with ruby

Irwi - Wiki в Rails-приложениях

Сегодня я хочу представить свой Rails-плагин, позволяющий добавить в приложение функциональность вики (не просто расширение моделей, а полноценную вики которая бы сразу работала)

Я обнаружил то, что для такой, казалось бы, стандартной задачи в Rails нет полноценного готового решения, которое бы легко интегрировалось с существующим приложением. В связи с этим был написан свой.

Основными критериями при разработке были:

  • Возможность быстрой интеграции в приложение.
  • Хорошая расширяемость.
  • Отсутствие чужого кода (в смысле кода плагина) в приложении, к чему часто приводит использование генераторов. В этом смысле я пытался равняться на Authlogic.

То, что получилось представляет из себя что-то среднее между генератором (что обеспечивает хорошую расширяемость и модифицируемость) и engine'ом (чтобы можно было легко обновлять его).

Читать дальше »

Средства тестирования в Ruby on Rails

Как известно, тестирование является одной из важнейших составляющих разработки приложений на основе Ruby on Rails. Поддержка тестирования была включена в Rails с самого начала, для этого использовалась библиотека Test::Unit. Однако, со временем, появилось много альтернативных средств для тестирования в Rails-приложениях.

В этой заметке я проведу небольшой обзор средств, используемых в настоящий момент для тестирования приложений на базе Ruby on Rails. Я не ставлю себе целью выбрать “лучшее” – я считаю, что этот выбор должен делать каждый сам, однако я попытаюсь показать различные варианты – чтобы было из чего выбирать.

Читать дальше »

Typus - админка в Rails-приложениях

typus2 typus1

Я не люблю писать одинаковый код много раз, тем более тривиальный. Я не люблю писать админки для Rails-приложений, потому что они состоят по большей части как раз из такого кода. И я не люблю генераторы, создающие кучу кода, который необходимо менять только в некоторых местах (поэтому для аутентификации я использую AuthLogic, а не restful_authentication).

И поэтому я был очень рад обнаружить замечательный проект: Typus. Это плагин для Rails, позволяющий значительно упростить процесс создания админки для приложений.

Читать дальше »

XML-RPC в Ruby

Как известно, XML-RPC является достаточно распространенным методом вызова удаленных процедур, основанным на XML. Однако, несмотря на то, что он значительно проще, чем, например, SOAP, его использование все еще иногда достаточно сложно: необходимо сериализовать объекты в специальное XML-представление, затем распарсить полученный релзультат.

Однако, на самом деле, не все так плохо!

В стандартной библиотеке Ruby существует замечательная поддержка XML-RPC, о которой я немного расскажу далее.

Читать дальше »

Разработка расширений для Radiant

Продолжая тему перевода блога на Radiant CMS и подсветки кода, сегодня я расскажу о создании расширений для него на примере простейшего, которое добавляет специальный тэг для подсветки кода.

Подсветка будет осуществляться с помощью CodeRay, о котором я уже писал в прошлой заметке.

Итак, создание простейшего расширения для Radiant CMS:

Читать дальше »

Библиотеки подсветки кода для Ruby

ruby-code-highligters-performance

В связи с переводом моего блога на Radiant у меня возник вопрос с подсветкой кода, который у меня встречается достаточно часто. Сейчас я использую для этого highlight.js, однако рассматриваю возможность использования серверных решений.

Так что, сегодня я расскажу о трех различных Ruby-библиотеках, используемых для подсветки синтаксиса:

Также, я провел замеры производительности, так что в конце вы можете найти сравнение библиотек по производительности.

Читать дальше »

Производительность RSS парсеров для Ruby

Не так давно, изучал возможность использования различных RSS парсеров для Ruby. В связи с этим, провел небольшое сравнение производительности различных парсеров. В сравнении участвовали:

  • RSS парсер из стандартной библиотеки
  • SimpleRSS
  • FeedTools
  • Syndication
  • FeedNormalizer
Для тестов я использовал две ленты:

Читать дальше »

StaticMatic: Статические сайты на Ruby

После программирования на Ruby on Rails быстро привыкаешь к этой платформе, и многим ее вкусностям. В частности, к часто используемым языкам разметки Haml и Sass.
Но иногда наступают моменты, когда надо сделать статический сайт из нескольких страничек, за которым нету никакой базы данных, да и серверной логики вообще.
Не хочется возвращаться к старым html и css. Но при этом и делать это на ROR неразумно.

Для таких случаев был создан фреймворк staticmatic, позволяющий на основе Haml+Sass+вкусностей на Ruby сгенерировать набор статичных веб-страниц, которые можно разместить на любом хостинге, без поддержки Ruby вообще.

Итак, как использовать staticmatic:

Читать дальше »

Периодические задачи в Ruby On Rails

Достаточно часто в веб-приложениях на Rails требуется выполнять периодические задачи. В частности, наиболее распространенной такой задачей является удаление устаревших сессий. Другими могут быть какие-либо задачи обновления данных и т.п.

Есть несколько подходов для реализации таких задач, наверное, одним из наиболее удобных является использование плагина BackgrounDrb, значительно упрощающего реализацию.

Здесь я кратко опишу процесс установки и конфигурирования плагина для выполнения какой-либо периодической задачи.

Читать дальше »

Установка и использование mod_rails (Passenger)

mod_rails (также известен как Phusion Passenger) - модуль для Apache, позволяющий осуществлять максимально простое размещение Rails-приложений. Установка модуля занимает буквально несколько минут, после этого приложение может быть размещено практически без осуществления какой-либо настройки Apache, буквально одной строчкой конфигурации.

Установка

Самый простой способ установки mod_rails - через использование Ruby Gems. Для установки необходимо выполнить из под рута две команды:

gem install passenger
passenger-install-apache2-module
И далее следовать инструкциям интерактивной программы инсталляции.

Размещение приложения

Для размещения приложения достаточно в конфигурационном файле Apache создать виртуальный хост и указать в качестве DocumentRoot директорию public Rails-приложения. Например:

<VirtualHost *:80>
ServerName www.mycook.com
DocumentRoot /webapps/mycook/public
</VirtualHost>

Читать дальше »

Ошибки Rails и FastCGI

Здесь я кратко опишу основные ошибки, которые могут возникнуть при размещении Rails-приложения на fcgi и методы их решения. Основные симптомы нижеописанных ошибок:

  • Вместо приложения, отображается:
    • Содержимое файла dispatch.fcgi
    • 505 Rails application failed to start
  • В логе ошибок появляются строки вида:
    • [warn] mod_fcgid: Read data error, fastcgi server has close connection
    • [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: dispatch.fcgi
  • Загрузка каждой страницы приложения занимает несколько секунд

Читать дальше »