Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Redis Backed Timeline
Rediline is a ruby library which intends to allow you to create timelines for your users in ruby.
Rediling has been built with the idea to make it compatible with any other ORM possible. Whether your users and objects are in SQL, MongoDB, CouchDB or anything else, you should be able to use it.
There are several requirements though.
You should also be able to use Rediling in a non-rails application. Sinatra for example. There are be dependencies to ActiveSupport and ActiveModel though.
As we're using ActiveSupport (mainly for #constantize), there were some problems with the version of the gem we're using.
Currently, ActiveSupport is required on a very permissive way (>= 2). That's intended to allow you to run rediline on a Rails2 application.
Moreover, we're using ActiveModel for the callbacks. And it requires ActiveSupport 3.0. So for now, there's no dependency to ActiveModel. But you must know that you need your models to behave correctly with it in order to have rediline to work.
Add the following to your Gemfile :
gem "rediline"
Bundle install it and you're done, it's installed.
Your user model should look like the following :
class User < ActiveRecord::Base
include Redline::User
rediline :timeline do
list :egocentric do
[user]
end
end
end
This will create a timeline which will be called "timeline", with one list named "egocentric".
In this list, you must return an array of all the users which will see the event created there.
For exemple, if your users have friends, you could do the following :
class User < ActiveRecord::Base
include Redline::User
rediline :timeline do
list :egocentric do
[user]
end
list :public do
user.friends.all
end
end
end
With this, any of your users will have two lists : an "egocentric" one, which will contain all the actions made by this same user.
And a "public" one, which will contain all the actions made by this user's friends.
You can retrieve a list's actions with the each method.
User.first.timeline.limit(10).each(:egocentric) do |action|
p action.inspect
end
You can potentially trigger events in any kind of model, whether they are linked to an ORM or not.
However, when including Rediline::Object
, your model should be compatible with ActiveModel::Callbacks
.
Here's what your model could look like :
class Post < ActiveRecord::Base
include Redline::Object
redline :timeline,
:user => :owner,
:verb => :created,
:when => :after_create
end
An after_create event will be added to this model and triggered every time a new post is created.
By default, we rely on the "user" method. But you can overwrite it to anything else like we do with "owner" here.
You can also use procs to define the values.
class Post < ActiveRecord::Base
include Redline::Object
redline :timeline,
:user => lambda {|post| post.owner },
:verb => :created,
:when => :after_create
end
By default, we use localhost:6379 as the redis server with the namespace "rediline".
However, you can change that.
Rediline has a redis setter which can be given a string or a Redis object.
This means if you're already using Redis in your app, Rediline can re-use the existing connection.
String: Rediline.redis = 'localhost:6379'
Redis: Rediline.redis = $redis
In a rails app, I have an initializer in config/initializers/rediline.rb
where I load config/rediline.yml
and set the redis information appropriately.
My rediline.yml file is the following :
development:
host: localhost
port: 6379
test:
host: localhost
port: 6379
And the initializer :
rediline_config = YAML::load(Rails.root.join('config', 'rediline.yml').read)[Rails.env]
Rediline.redis = Redis.new(
:host => rediline_config['host'],
:port => rediline_config['port'],
:password => rediline_config['password']
)
Want to hack on Rediline?
First clone the repo and run the tests:
git clone git://github.com/dmathieu/rediline.git
cd rediline
bundle install
rake test
If the tests do not pass make sure you have Redis installed correctly.
Once you've made your great commits:
FAQs
Unknown package
We found that rediline demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.