Graphable

Graphable is a ruby gem which builds static graphs in Neo4j from a secondary, ActiveModel-ish data store.

How to use it:

Say you have some models:

#where ActiveMapper::Root is your ActiveModelly ORM of choice
class User < ActiveMapper::Root

  has_many :followers, :class => User

  property :name
  property :join_date

end

And you want to turn it into a graph periodically for cool reporting or something. Then you can do:

class User < ActiveMapper::Root
  include Graphable

  has_edge to: User, via: :followers, name: "followed_by"
  has_many :followers, :class => User

  indexes :name, :join_date

  property :name
  property :join_date
end

Which will take your SQL db and turn it into a lovely Neo4j Graph! (With indexes automatically on the :id field, and anything else you specify in the indexes call. Don't worry if you specify something twice, it won't double index!

Warning:

This is very organic, I extracted the concept from another project, rewrote it here in an afternoon, and here it is.