Как стать автором
Обновить

Социальные gem'ы для рельс

Доброе утро.
Как вы уже наверно поняли из названия, речь пойдет о Ruby on Rails, а если точнее — о Gem'ах которые помогут вам в создании социальной сети или сервиса с социальными функциями. Я надеюсь, что эта статья поможет начинающим девелоперам сэкономить время и познакомиться с быстрой и приятной разработкой на ROR.
Эту статью я написал исходя из своего опыта, все гемы и плагины опробованы лично мною, из всех опробованных я выбрал самые лучшие. Все нижеописанные гемы я использую в своем стартапе, о процессе его разработки и о нем самом я расскажу в следующих статьях.

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

Аутентификация


Я думаю первое, что делает девелопер в приложении — это подключение системы аутенфикации. Стандартом де-факто для этого в последнее время является Devise. И это вполне объясняется тем, что он содержит весь требуемый для аутентификации функционал, при этом, в отличие от аналогов приведенных ниже, не генерирует излишний код и позволяет легко настраивать функционал с помощью конфигов или разных дополнений. В добавок ко всему, Devise отлично дружит с rails 3.

Ссылки:


Devise на GitHub



Аналоги:


Clearance


RESTful Authentication


Authlogic



Авторизация


Подключение дополнительного гема для авторизации нужно не всегда, но если требуется хорошее управление правами пользователей, CanCan является одним из лучших решений, который, в отличие от Acl9, хранит все права пользователей в одном месте, что на мой взгляд является плюсом.

Ссылки:


CanCan на GitHub



Аналоги:


Acl9



OpenID, OAuth


При реализации аутентификации через Devise, самым удобным и функциональным средством для авторизации через сторонние сервисы является OmniAuth. Поддерживаются такие сервисы как: Facebook, Twitter, LinkedIn, Google Apps, OpenID, GitHub и другие, менее популярные.

Ссылки:


OmniAuth на GitHub


OmniAuth дополнение для vkontakte.ru



Аналоги:


OAuth для Authlogic



Фотографии/Аудио/Видео пользователей


Наиболее распространенным гемом для прикрепления файлов к моделям (чаще всего изображений) считается Paperclip. Поддерживает все возможные способы кастомизации (ресайз, конвертирование изображений) и валидации, а также может быть полезен для реализации хранения файлов на amazon s3. От Attachment_fu по функционалу не сильно отличается, но мне больше по нраву кастомизация в Paperclip.

Ссылки:


Paperclip на GitHub



Аналоги:


Attachment_fu



Темы


Не очень популярной, но иногда весьма нужной функцией является поддержка тем в настройках пользователей. Лично для меня самым подходящим вариантом оказался ThemeSupport.

Ссылки:


ThemeSupport на GitHub



Тэги


Какая же современная социальная сеть без поддержки добавления тегов на все и вся? Для этого также есть удобный гем — Acts-As-Taggable-On.

Ссылки:


Acts-As-Taggable-On на GitHub



«Мне нравится»


Нынче кнопка «мне нравится» более популярна в соц сетях, чем плюс/минус. Функционал не трудный, но зачем изобретать велосипед? Все можно сделать за пять минут в помощью Acts-As-Likable. Единственное, для установки на rails 3 понадобятся некоторые танцы с бубном, в частности — создание миграции вручную вместо генерации.

Ссылки:


Acts-As-Likable на GitHub



Лента новостей


И последнее, самое вкусное. Недавно наткнулся на очень полезный гем timeline_fu, с помощью которого очень просто реализовать ленту активности пользователей.

Ссылки:


Timeline_fu на GitHub



P.S. Принято, что гемы с подобным функционалом называются примерно так «acts-as-#{feature}».
И если не получается нагуглить «гем для поддержки комментариев», можно попробовать «acts-as-commentable»
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.