Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/brandymint/courier
Система управления подписками и рассылками
https://github.com/brandymint/courier
Last synced: about 6 hours ago
JSON representation
Система управления подписками и рассылками
- Host: GitHub
- URL: https://github.com/brandymint/courier
- Owner: BrandyMint
- License: mit
- Created: 2011-03-30T10:50:46.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2013-07-01T11:21:43.000Z (over 11 years ago)
- Last Synced: 2023-03-10T22:28:51.949Z (over 1 year ago)
- Language: Ruby
- Homepage:
- Size: 436 KB
- Stars: 5
- Watchers: 20
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## Build status [![Build Status](https://secure.travis-ci.org/dapi/courier.png)](http://travis-ci.org/dapi/courier)#
## Courier
Базовый модуль для управления подпиской:
Courier.subscribe user, :new_comments, @post
Courier.unbubscribe ...Запуск рассылки с указанным именем
Courier.notify :new_post, @post
Courier.notify :new_news_item, NewsItem.lastЭтот метод находит всех пользователей подписанных на данную рассылку, в
независимост от того подписывались они на пост или подписывались на всю
рассылку (не указывался resource при подписке) и
передает их в рассылочный класс (наследника `Courier::Subscription`)### Подписать пользователя
На указанную рассылку, при необходимости указыватся ресурс (например
`@post`). Тоже что и `Courier.subscribe` только через пользовательский
объект.user.subsribe :new_comments, @post
user.subsribe :new_posts
user.unsubsribe :new_posts## Courier::Subscription::Base
Модель и базовый класс управления подпиской. Записи создаются
на стадии разработки приложения.Поля модели:
* id
* name - имя попдиски
* type - класс управления
* access - уровень доступа на подписку (user/admin)
* subject - тема письма
* properties - serialized hashМетоды:
subscribe user, resource=nil
unsibscribe user, resource=nil## Courier::Subscription::Base < Base
properties:
* subject_method - название метода у модели для вытаскивания темы письма
(например `"subject"` или `"title"`). Если не установле то в качестве темы используется
поле subject подписки## Courier::SubscriptionUser
Матрица пользователь<->рассылка.
Поля модели
* subscription_id
* user_id
* resource_id
* resource_type## Примеры
Как разослать письма вручную:
Courier::Mailer.send( :new_comment,
User.first,
'test subjet',
NewsItem.find(15761).comments.first
).deliver
## Создание новой подпискиВначале определяем подписку в lib/tasks/seed/courier.rake
Courier.create :user_posts do
description 'Новые посты пользователя' # заголовок, который будет отображаться в my.investcafe.ru/subscriptions
from 'Инвесткафе '
subject '%{user.name.to_s} написал новый пост %{post.title}' # тема письма
access :user #доступ к подписке, пользователи или админы
endЗапускаем rake, чтобы подписка загрузилась в бд
rake icf:seed:courier
Для формирования письма добавляем метод класса Courier::Mailer::Common, в app/mailers/courier/mailer/common.rb
def user_posts(context)
@post = context.post
@subscriber = context.subscribermail do |format|
format.html { render :user_posts }
end
end
либо используем уже готовый шаблон.Для вывода ссылки на подписку/отписку используйте хелпер
= toggle_subscription_link user, :user_posts
первым параметром идет ресурс (на что подписываемся), потом идет название самой подписки.
После первой подписки идем на страницу my.investcafe.ru/subscriptions и проверяем как отображаются вновь добавленные.
## Docs
http://rubydoc.info/github/BrandyMint/courier/master/frames
http://docs.brandymint.ru