SQLite + RoR + Ubuntu

21 августа 2009, Пятница

Записываю, чтобы не забыть.

Ставим:

 sudo apt-get install sqlite3 libsqlite3-dev
 sudo gem install sqlite3-ruby
И все!

Строим графики и диаграммы с open flash chart

22 октября 2008, Среда

Очень часто возникает необходимость каким-либо способом визуализировать данные, например в виде графиков и диаграмм. В такой ситуации на помощь может прийти плагинчег - open flash chart.

Ну и для начала установим его:

ruby script/plugin install http://svn.pullmonkey.com/plugins/trunk/open_flash_chart/

После нужно скопировать файлик open_flash_chart.swf в path/to/your/app/public/ и файлик swfobject.js в  path/to/your/app/public/javascripts.

Данный плагин сводит до минимума роботу программиста, поэтому не буду изощряться примерами и просто оставлю ссылку, где все и так видно. Кому интересно жмем сюда

ferret - Полнотекстовый поиск в вашем сайте

27 сентября 2008, Суббота

Создание поиска по сайту задача частая и тривиальная. В Rails в основном осуществляется поиск по информации, которая хранится в моделях. Для этого в ActiveRecord есть метод find. Существует масса примеров как можно осуществлять поиск при помощи этого метода. Но у него есть существенный недостаток. На самом деле это обертка вокруг SELECT запроса, поэтому если ваш поиск сложнее чем просто выборка этот метод вам не подойдет. Кроме того, простой find имеет существенный недостаток - скорость. Если Вы используете MySQL, можете переключиться на MySQL full text search - лично я не пробовал но блоги пишут, что сильно ускоряет. Решение плохое так как привяжет вас к СУБД, что не есть очень хорошо.

Для организации эффективного и самое главное быстрого поиска применяются так называемые индексные сервера. Жависты имеют в своем арсенале Lucene - неплохой движок для полнотекстового поиска. Лопатит миллионы строк и возвращает очень даже приемлемые результаты.

Но наряду с позитивом есть и негатив. Lucene - написан на жаве и для того чтобы его использовать нужно поднимать на сервере жаву, Tomcat и т.д. В принципе ничего сложного, тем более есть мануалы.

Но есть альтернатива! ferret - библиотека для полнотекстового поиска написана на Ruby.

Инсталлируем

 gem install ferret

Правда просто? ИМХО gem - гениальная вещь.

Но, есть одно маленькое НО. Для успешной установки ferret на Win32 необходимо иметь в наличии компилятор С/С++. Я воспользовался для этого VC++ 6.0. Для того чтобы все прошло гладко, необходимо настроить пути компиляции( переменные окружения LIB, INCLUDE, PATH).

Используем совместно с ActiveRecord в RubyOnRails

Для того чтобы все было гладко есть плагин - Acts as Ferret. ( Правда этот плагин доступен также и как gem ).

Ставим плагин

script/plugin install svn://projects.jkraemer.net/acts_as_ferret/tags/stable/acts_as_ferret

Используем в моделях

Вписываем в модель такой код:

class Foo < ActiveRecord::Base
   acts_as_ferret
end

Тоже не сложно. После такой записи у вас будет доступен следующий синтаксис:

 Foo.find_with_ferret("запрос")

Кроме того ferret создаст директорию index в Вашем проекте, в которой создаст также поддиректории конфигураций запуска (test, development, production). В этих директориях ferret и будет сохранять индексы. Для каждой модели будет создано свою поддиректорию.

Индексом можно управлять. По умолчанию добавление/удаление данных в модели провоцирует обновление индекса. Кроме того Вы сами можете настраивать, что отображать в поиске а что нет. Для постраничного вывода также существует ряд параметров поиска (limit, page).

Это конечно только вершина айсберга использования ferret, завесу понимания приоткроет чтение документации.

Вот и все. Будут вопросы - пишите.

CSV with Ruby

22 августа 2008, Пятница

Если стоит задача работы с csv(Comma Separated Values) файлами на помошь может прийти замечательная гемка fastercsv. Ставится она, как и все, очень просто:

gem install fastercsv

Ну и конечно небольшой примерчег кода где открывается csv файл, парситься и выводиться его содержимое в консоль:

require ‘fastercsv’

FasterCSV.parse( File.open( “example.csv” ) ) do |row|

row.each {|cell| puts cell}

end

Вот и все :)

Gravatar в Rails

11 июля 2008, Пятница

Gravatar (Globally Recognized Avatar) - онлайновый сервис хранения аватаров.  Сервис требует регистрации(регистрация базируется на emal), после чего предоставляется возможность аплодить аватар, который будет асоциироваться с его акаунтом. В общем ничего сверхестественного.

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

Теперь немного о поддержке интеграции с сервисом в Ваш интернет-ресурс с помощью Rails.

Все очень просто.

Пишим небольшой  хелпер следующего содержания:

require ‘digest/md5′

def gravatar_url_for( email )

# create MD5 hash by email address

hash= Digest::MD5.hexdigest(email)

“http://en.gravatar.com/avatar/#{hash}”

end

И вьюв выглядин следующим образом:

<%= image_tag( gravatar_url_for ( email ))%>

Вот и все:)

Deploying Rails

17 мая 2008, Суббота

Вышла в свет очередная книга из серии “Прагматическое программирование“. Называется - “Deploying Rails Applications: A Step-By-Step Guide“. Книжка рассказывает о не простом, на первый взгляд, процессе развертывание приложений на RoR. Много важных нюансов и особенностей. Ждем - когда появится для скачивания.

Блог работает на WordPress.
Подписка RSS: все записи, комментарии.