Статистика, уведомление и триггеры в Ruby on Rails

Posted on Май 18, 2008. Filed under: coding, ruby | Метки: , , |

Передо мной стоит задача реализовать сбор статистики использования приложения на Ruby On Rails. Для этого подходит шаблон Observer, наблюдатель. В общем виде он применяется когда есть следующая задача:

Один объект («Подписчик») должен знать об изменении состояний или некоторых событиях другого объекта. При этом необходимо поддерживать низкий уровень связывания с объектом — «Подписчиком».

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

Я приведу задачу из плугина restful_authentication, который наверное всем знаком. Он используется для реализации системы аутентитификации. Допустим, у меня есть класс User. Я хочу чтобы после того, как объект этого класса получил сообщение create, пользователю было отправлено сообщение на email с помощью UserMailer.deliver_signup_notification(user) (мы не будем разбираться с этим классом, примите как данное, что он хорошо работает и умеет отсылать письма). Так как работа с почтой и уведомлениями не является основной задачей класса User, то стоит создать наблюдателя, который бы справлялся с этой задачей.

В Rails наблюдателей можно сделать вообщем двумя способами: коротким и длинным. Сначала — длинный:

class UserObserver < ActiveRecord::Observer
def after_create(user)
UserMailer.deliver_signup_notification(user)
end
end

Мы создаем observer для класса User. Поэтому обязательно имя класса будет UserObserver. Он должен наследовать от Observer (ссылка на описание в Ror API). Чтобы он обрабатывал сообщение User#create мы описываем метод after_create, принимающий в качестве аргумента объект, за которым наблюдатель собственно наблюдает.

Сохраните этот код в файл app/models/user_observer.rb.

Чтобы Observer заработал его нужно зарегистрировать. Для этого в файле config/environment.rb вашего Rails приложения добавьте такую строку (если её еще нету):

config.active_record.observers = :user_observer

Это все, что касается долгого пути. А теперь короткий:

В консоли напишите

>ruby script/generate Observer User

Это сгенерирует файл app/models/user_observer.rb, и занесет в config/environment.rb ту самую верхнюю строку. В app/models/user_observer.rb будет находиться

class UserObserver < ActiveRecord::Observer
end

А вы дополните её своим кодом. Таким вот простым образом мы можем обрабатывать любые события, происходящими с нашими моделями в Ror приложении.

За подробной информацией обращайтесь сюда api.rubyonrails.org, citforum.ru.

Реклама

Make a Comment

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Один ответ to “Статистика, уведомление и триггеры в Ruby on Rails”

RSS Feed for Место для привлекательного названия Comments RSS Feed

хорошая реклама для citforum.ru


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

%d такие блоггеры, как: