Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

timeful

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

timeful

  • 2.1.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Timeful

Gem Version Dependency Status Code Climate

Timeful is a Ruby on Rails engine for building timelines (aka "activity streams").

Why another gem?

There are battle-tested activity stream builders out there already (the most known being PublicActivity, TimelineFu and Social Stream. However, these gems do not really create a feed for each user, but simply record a list of global activities and leave you to deal with the retrieval.

Timeful is different: it takes a simple approach at building user feeds and allows you to obtain an ordered list of feed items for each user.

Also, Timeful does not handle presentation: you will have to build your own views and controllers to expose feeds. This keeps the codebase smaller and allows you to easily integrate Timeful in JSON APIs.

Installation

Add this line to your application's Gemfile:

gem 'timeful'

And then execute:

$ bundle

Or install it yourself as:

$ gem install timeful

Then, run the installer generator:

$ rails g timeful:install
$ rake db:migrate

Finally, add the following to the model that will have a feed and publish activities (this is usually your User model, but you can use two different models):

class User < ActiveRecord::Base
  include Timeful::Model::Actor
  include Timeful::Model::Subscriber
end

Usage

Timeful revolves around three core concepts:

  • Activity: An action taken by an actor on an target. Metadata can also be attached to activities. An example would be "John Doe (actor) wrote (action) a comment (target)."
  • Feed: A collection of activities that should be accessible by a specific user.
  • Feed item: The instance of an activity in a user's feed.

Each activity action (or "type") has its own class. This is required because Timeful has to know which feeds the activity should be added to.

To avoid polluting app/models, it is recommended to put your activities in the app/activities directory.

Here's an example activity:

class CommentActivity < Timeful::Activity
  def subscribers
    [target.post.author]
  end
end

Now, you can publish the comment activity:

user.publish_activity :comment, target: comment

You can also attach metadata to the activity:

user.publish_activity :comment, target: comment, meta: { foo: 'bar' }

This will create an Activity and link it to the author's feed through a FeedItem:

author = comment.post.author
author.feed_items.count # => 1

Performance

TODO: Write performance considerations

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/alessandro1997/timeful.

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 28 Sep 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc