Neo4j-Rails
This is an experimental library for playing with an ActiveModel-charged version of the Neo4j.rb Ruby library. The intent is to use it as a full replacement for ActiveRecord inside a Rails 3 application.
Of course you can use Neo4j.rb as is in a Rails application, but this
library uses ActiveModel to make the API and usage even closer to
ActiveRecord. One example of this is the way Model.new
works.
In Neo4j.rb, Node.new
requires a transaction and immediately stores
the node in the database.In Neo4j-Rails, object initialization matches
ActiveRecord-style two-step Model.new
+ Model#save
creation. This
makes it easier to create forms that don't touch the database if
validation fails.
Usage
Include the 'neo4j-rails' library in your Gemfile to use in your project.
gem "neo4j-rails"
Extend Neo4j::Model to create your model node classes.
class IceCream < Neo4j::Model
property :flavour
validates_presence_of :flavour
end
IceCream.new.valid? # => false
IceCream.new(:flavour => "vanilla").valid? # => true
Configure the location of the Neo4j database and Lucene index files on
disk. The Lucene search index will normally be created in memory, so
set store_on_file = true
to save it to disk. Usually these settings
will go in config/application.rb
or config/environments/*.rb
.
Rails.application.configure do
config.neo4j.storage_path = "/var/neo4j"
config.lucene.storage_path = "/var/lucene"
config.lucene.store_on_file = true
end
API
Many of the familiar API methods from ActiveRecord are duplicated in Neo4j::Model. Neo4j::Model includes ActiveModel::Validations, ActiveModel::Conversions, and ActiveModel::Callbacks.
class Neo4j::Model
def valid?; end
def save; end
def save!; end
def update_attributes(attributes); end
def update_attributes!(attributes); end
def destroy; end
def attributes=(attrs); end
def reload; end
def self.all; end
def self.find(*); end
def self.create(attributes); end
def self.create!(attributes); end
end
License
Neo4j-Rails is available under the terms of the MIT license (see LICENSE.txt for details).
However, Neo4j-Rails also depends on the Neo4j.rb library, and the MIT license does not replace or cover the licensing terms of its own library or its components.