lest, just lest

Заметки о web-разработке, администрировании Linux и настройке Mac OS X

Развертывание сайта на Jekyll – Capistrano и Rsync

без комментариев

Jekyll представляет собой простой генератор статических сайтов. Он берет директорию с шаблонами и преобразует их с использованием Textile/Markdown и Liquid в обычные статические html-страницы, которые могут отдаваться напрямую через Apache, Nginx или любой другой web-сервер.

Многие уже привыкли разворачивать свои web-приложения с помощью Capistrano, запуская команду cap deploy. Поэтому удобно использовать такой же способ и для статического сайта, генерируемого при помощи Jekyll. Для этого необходимо создать Capfile в директории с Jekyll-сайтом:

Read the rest of this entry »

Автор: lest

Январь 5, 2011 в 22:54

Опубликовано в development

Метки: , , ,

Thinking Sphinx и runit

1 комментарий

Thinking Sphinx является, пожалуй, наилучшим способом использовать Sphinx в Rails-приложении, но предлагаемый по-умолчанию вариант его запуска (rake thinking_sphinx:start) несколько сомнителен для production окружения. Как раз тут приходит на помощь runit.

Супервизор runit - идеальный способ для запуска и управления своими сервисами. Он реализует такой функционал, как:

  • превращение любого процесса в демон;
  • логирование вывода процесса и ротирование логов;
  • запуск, остановка, рестарт, запрос состояния, управляющие скрипты для init.d;
  • выключение и запуск сервисов автоматически при появлении новых сервисов в списке либо удалении старых из списка;
  • возможность ведения нескольких независимых списков сервисов одновременно (например, для каждого пользователя отдельно и для системы в целом);
  • удобный API для управления сервисами.

Звучит отлично! Но как же запустить через него наш Sphinx?

Read the rest of this entry »

Автор: lest

Декабрь 4, 2010 в 00:23

Опубликовано в linux

Метки: , , , ,

Установка Sphinx на Debian Lenny

2 комментариев

Sphinx вероятно самый мощный и быстрый из всех открытых движков полнотекстового поиска. Особенно удобен тем, что имеет прямую интеграцию с популярными базами данных и поддерживает развитые возможности поиска, включая ранжирование и стемминг для русского и английского языка. Поддерживаются и нетривиальные возможности вроде распределённого поиска и кластеризации, однако фирменной фичей является очень и очень высокая скорость индексации и поиска, а также способность отлично распараллеливаться и утилизировать ресурсы современных серверов.

Скачиваем исходники со страницы загрузок Sphinx, распаковываем и переходим в директорию с ними:

wget "http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz"
tar xzf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9

Поддержка баз данных регулируется параметрами configure:

  • --with[out]-mysql - по-умолчанию --with-mysql
  • --with[out]-pgsql - по-умолчанию --without-pgsql

Так, например, если необходимо скомпилировать Sphinx с поддержкой PostgreSQL, но без MySQL, то конфигурируем так:

Read the rest of this entry »

Автор: lest

Сентябрь 7, 2010 в 22:03

Опубликовано в linux

Метки: , ,

CKEditor в Ruby on Rails c загрузкой файлов через SWFUpload

4 комментариев

Достаточно часто появляется необходимость предоставить пользователям Вашего web-приложения возможность удобно редактировать содержимое. Для обычного пользователя оптимальным вариантом является использование WYSIWYG html-редактора. Таким решением является редактор CKEditor, интерфейс которого во многом подобен интерфейсам Microsoft Word и OpenOffice Writer.

CKEditor

Плагин rails-ckeditor предназначен для интеграции CKEditor'а в Rails-приложение. Также он включает в себя возможность загрузки изображений и файлов из интерфейса редактора через SWFUpload.

Read the rest of this entry »

Автор: lest

Май 12, 2010 в 19:01

Опубликовано в ruby

Метки: , , , , , ,

Emacs RSpec mode

без комментариев

Второстепенный режим RSpec добавляет в Emacs возможность удобно вести разработку приложений в стиле BDD (Behaviour Driven Development) с использованием библиотеки для тестирования RSpec.

Пример работы RSpec mode можно увидеть на скриншоте:

Emacs RSpec mode

Read the rest of this entry »

Автор: lest

Май 11, 2010 в 11:16

Опубликовано в emacs

Метки: , , ,

Работа с буфером обмена из консоли в Mac OS X

без комментариев

Скопировать что-либо в буфер обмена Mac OS X из консоли довольно просто. В наличии есть команда pbcopy, которая копирует передаваемые ей данные в буфер обмена (так называемый pasteboard в OS X, поэтому команда начинается с "pb").

Использовать эту команду просто:

echo 'test' | pbcopy

С помощью этого строка "test" будет скопирована в буфер обмена. Теперь можно вставить эту строку в браузер, почту или куда угодно. В случае если необходимо вставить из буфера обмена также через консоль, то можно использовать команду pbpaste:

pbpaste > file.txt

В результате скопированная ранее строка "test" вставится в файл "file.txt".

Автор: lest

Май 11, 2010 в 11:04

Опубликовано в mac os x

Метки: , ,

Использование Sinatra внутри Rails Metal

без комментариев

С версии 2.3 в Rails присутствует Rails Metal, который позволяет обработать запросы перед попаданием их в основное приложение. Для более удобного написания кода в Rails Metal можно использовать различные фреймворки, базирующиеся на Rack, в частности фреймворк Sinatra.

Сначала необходимо создать новый Rails Metal с помощью соответствующего генератора:

./script/generate metal MyEmbeddedSinatra
      create  app/metal
      create  app/metal/my_embedded_sinatra.rb

В результате получается следующий Rack обработчик:

Read the rest of this entry »

Автор: lest

Апрель 6, 2010 в 15:32

Опубликовано в ruby

Метки: , , , ,

Cron и Ruby: использование Whenever

1 комментарий

Библиотека Whenever предоставляет простой синтаксис для определения cron задач, позволяет вывести или записать crontab файл. Whenever разработана с учетом использования с Rails приложениями и развертывания через Capistrano, но может использоваться и независимо.

Для использования нужно установить гем whenever:

gem install whenever

Read the rest of this entry »

Автор: lest

Март 17, 2010 в 15:23

Опубликовано в ruby

Метки: , , ,

Интеграция KWallet и ssh-agent в среде KDE

1 комментарий

В среде KDE можно хранить пароли к ssh ключам с помощью стандартного средства управления паролями KWallet. Команда ssh-add, добавляющая ключи в ssh-agent, позволяет использовать программу, указанную в переменной окружения SSH_ASKPASS, для получения пароля к ssh ключу.

Для KDE также существует программа Ksshaskpass, которая позволяет сохранять пароли в KWallet и затем передавать их команде ssh-add.

Ksshaskpass screenshot

Read the rest of this entry »

Автор: lest

Март 16, 2010 в 22:07

Опубликовано в linux

Метки: , , , , , ,

Sinatra и DataMapper: пример сервиса сокращения ссылок

без комментариев

В мире Ruby существует несколько ORM библиотек. Самая популярная библиотека ActiveRecord является и самой тяжелой, к тому же ее не особо удобно использовать вне Rails. Для небольших приложений на фреймворке Sinatra наиболее оптимальным вариантом является библиотека DataMapper, которая не уступает по функциональности, а в некоторых моментах опережает своего главного конкурента.

На примере простого сервиса сокращения ссылок рассмотрим работу с DataMapper внутри Sinatra.

Устанавливаем гемы с DataMapper и адаптером Sqlite к нему:

gem install data_mapper do_sqlite3

DataMapper состоит из нескольких библиотек, использовать будем только некоторые из них:

  • dm-core - ядро DataMapper'а.
  • dm-validations - готовые методы для проверки входных данных.
  • dm-timestamps - автоматическое создание и обновление полей created_at, updated_at.

В app.rb подключим необходимые библиотеки из DataMapper и настроим соединение с базой данных:

Read the rest of this entry »

Автор: lest

Февраль 24, 2010 в 12:26

Опубликовано в ruby

Метки: , , , ,