Доброе утро.
Как вы уже наверно поняли из названия, речь пойдет о Ruby on Rails, а если точнее — о Gem'ах которые помогут вам в создании социальной сети или сервиса с социальными функциями. Я надеюсь, что эта статья поможет начинающим девелоперам сэкономить время и познакомиться с быстрой и приятной разработкой на ROR.
Эту статью я написал исходя из своего опыта, все гемы и плагины опробованы лично мною, из всех опробованных я выбрал самые лучшие. Все нижеописанные гемы я использую в своем стартапе, о процессе его разработки и о нем самом я расскажу в следующих статьях.
Как известно, хабр не резиновый и слишком длинные статьи плохо усваиваются, поэтому я не буду приводить здесь полный код приложения, а просто дам ссылки и описания плагинов и гемов, которые помогут в его написании.
Я думаю первое, что делает девелопер в приложении — это подключение системы аутенфикации. Стандартом де-факто для этого в последнее время является Devise. И это вполне объясняется тем, что он содержит весь требуемый для аутентификации функционал, при этом, в отличие от аналогов приведенных ниже, не генерирует излишний код и позволяет легко настраивать функционал с помощью конфигов или разных дополнений. В добавок ко всему, Devise отлично дружит с rails 3.
Подключение дополнительного гема для авторизации нужно не всегда, но если требуется хорошее управление правами пользователей, CanCan является одним из лучших решений, который, в отличие от Acl9, хранит все права пользователей в одном месте, что на мой взгляд является плюсом.
При реализации аутентификации через Devise, самым удобным и функциональным средством для авторизации через сторонние сервисы является OmniAuth. Поддерживаются такие сервисы как: Facebook, Twitter, LinkedIn, Google Apps, OpenID, GitHub и другие, менее популярные.
Наиболее распространенным гемом для прикрепления файлов к моделям (чаще всего изображений) считается Paperclip. Поддерживает все возможные способы кастомизации (ресайз, конвертирование изображений) и валидации, а также может быть полезен для реализации хранения файлов на amazon s3. От Attachment_fu по функционалу не сильно отличается, но мне больше по нраву кастомизация в Paperclip.
Не очень популярной, но иногда весьма нужной функцией является поддержка тем в настройках пользователей. Лично для меня самым подходящим вариантом оказался ThemeSupport.
Какая же современная социальная сеть без поддержки добавления тегов на все и вся? Для этого также есть удобный гем — Acts-As-Taggable-On.
Нынче кнопка «мне нравится» более популярна в соц сетях, чем плюс/минус. Функционал не трудный, но зачем изобретать велосипед? Все можно сделать за пять минут в помощью Acts-As-Likable. Единственное, для установки на rails 3 понадобятся некоторые танцы с бубном, в частности — создание миграции вручную вместо генерации.
И последнее, самое вкусное. Недавно наткнулся на очень полезный гем timeline_fu, с помощью которого очень просто реализовать ленту активности пользователей.
P.S. Принято, что гемы с подобным функционалом называются примерно так «acts-as-#{feature}».
И если не получается нагуглить «гем для поддержки комментариев», можно попробовать «acts-as-commentable»
Как вы уже наверно поняли из названия, речь пойдет о Ruby on Rails, а если точнее — о Gem'ах которые помогут вам в создании социальной сети или сервиса с социальными функциями. Я надеюсь, что эта статья поможет начинающим девелоперам сэкономить время и познакомиться с быстрой и приятной разработкой на ROR.
Эту статью я написал исходя из своего опыта, все гемы и плагины опробованы лично мною, из всех опробованных я выбрал самые лучшие. Все нижеописанные гемы я использую в своем стартапе, о процессе его разработки и о нем самом я расскажу в следующих статьях.
Как известно, хабр не резиновый и слишком длинные статьи плохо усваиваются, поэтому я не буду приводить здесь полный код приложения, а просто дам ссылки и описания плагинов и гемов, которые помогут в его написании.
Аутентификация
Я думаю первое, что делает девелопер в приложении — это подключение системы аутенфикации. Стандартом де-факто для этого в последнее время является Devise. И это вполне объясняется тем, что он содержит весь требуемый для аутентификации функционал, при этом, в отличие от аналогов приведенных ниже, не генерирует излишний код и позволяет легко настраивать функционал с помощью конфигов или разных дополнений. В добавок ко всему, Devise отлично дружит с rails 3.
Ссылки:
Аналоги:
Авторизация
Подключение дополнительного гема для авторизации нужно не всегда, но если требуется хорошее управление правами пользователей, CanCan является одним из лучших решений, который, в отличие от Acl9, хранит все права пользователей в одном месте, что на мой взгляд является плюсом.
Ссылки:
Аналоги:
OpenID, OAuth
При реализации аутентификации через Devise, самым удобным и функциональным средством для авторизации через сторонние сервисы является OmniAuth. Поддерживаются такие сервисы как: Facebook, Twitter, LinkedIn, Google Apps, OpenID, GitHub и другие, менее популярные.
Ссылки:
OmniAuth дополнение для vkontakte.ru
Аналоги:
Фотографии/Аудио/Видео пользователей
Наиболее распространенным гемом для прикрепления файлов к моделям (чаще всего изображений) считается Paperclip. Поддерживает все возможные способы кастомизации (ресайз, конвертирование изображений) и валидации, а также может быть полезен для реализации хранения файлов на amazon s3. От Attachment_fu по функционалу не сильно отличается, но мне больше по нраву кастомизация в Paperclip.
Ссылки:
Аналоги:
Темы
Не очень популярной, но иногда весьма нужной функцией является поддержка тем в настройках пользователей. Лично для меня самым подходящим вариантом оказался ThemeSupport.
Ссылки:
Тэги
Какая же современная социальная сеть без поддержки добавления тегов на все и вся? Для этого также есть удобный гем — Acts-As-Taggable-On.
Ссылки:
«Мне нравится»
Нынче кнопка «мне нравится» более популярна в соц сетях, чем плюс/минус. Функционал не трудный, но зачем изобретать велосипед? Все можно сделать за пять минут в помощью Acts-As-Likable. Единственное, для установки на rails 3 понадобятся некоторые танцы с бубном, в частности — создание миграции вручную вместо генерации.
Ссылки:
Лента новостей
И последнее, самое вкусное. Недавно наткнулся на очень полезный гем timeline_fu, с помощью которого очень просто реализовать ленту активности пользователей.
Ссылки:
P.S. Принято, что гемы с подобным функционалом называются примерно так «acts-as-#{feature}».
И если не получается нагуглить «гем для поддержки комментариев», можно попробовать «acts-as-commentable»