cadet 0.0.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +26 -0
- data/README.md +59 -0
- data/Rakefile +7 -0
- data/cadet.gemspec +21 -0
- data/lib/cadet/batch_inserter/batch_inserter.rb +50 -0
- data/lib/cadet/batch_inserter/node.rb +25 -0
- data/lib/cadet/index_provider/index_provider.rb +46 -0
- data/lib/cadet/node.rb +54 -0
- data/lib/cadet/session.rb +83 -0
- data/lib/cadet/traversal/description.rb +30 -0
- data/lib/cadet/traversal/evaluator.rb +15 -0
- data/lib/cadet/traversal/path.rb +12 -0
- data/lib/cadet/version.rb +3 -0
- data/lib/cadet.rb +30 -0
- data/lib/neo4j/README.txt +16 -0
- data/lib/neo4j/concurrentlinkedhashmap-lru-1.3.1.jar +0 -0
- data/lib/neo4j/geronimo-jta_1.1_spec-1.1.1.jar +0 -0
- data/lib/neo4j/lucene-core-3.6.2.jar +0 -0
- data/lib/neo4j/neo4j-cypher-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-cypher-commons-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-cypher-compiler-1.9-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-cypher-compiler-2.0-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-graph-algo-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-graph-matching-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-jmx-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-kernel-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-lucene-index-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-shell-2.0.0.jar +0 -0
- data/lib/neo4j/neo4j-udc-2.0.0.jar +0 -0
- data/lib/neo4j/org.apache.servicemix.bundles.jline-0.9.94_1.jar +0 -0
- data/lib/neo4j/parboiled-core-1.1.6.jar +0 -0
- data/lib/neo4j/parboiled-scala_2.10-1.1.6.jar +0 -0
- data/lib/neo4j/scala-library-2.10.3.jar +0 -0
- data/lib/neo4j/server-api-2.0.0.jar +0 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/cadet_spec.rb +18 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: abffa401951196b50b8baa617c43be24ceb3c115
|
4
|
+
data.tar.gz: 7b9a1a911568427d585a7c6771ee1a8bd8bc9402
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1415ad1dfcd2023a62c3c16c677e0c2f56ae7c5fa923ddbcd939834c57b8f665c7da5993648e996bef4393ff32888670de2e7d42cd82cda22042382055d4ed18
|
7
|
+
data.tar.gz: 1b75ffe54d7e79b00746f8c4e1fed335c80bef6f9c0e9a5e56577a9cac3a4410a7a05568b09d570068017139e7cfb06c7bff940c3a2e66622582d8e573b17763
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.bundle
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
cadet (0.0.1-java)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.2.5)
|
10
|
+
rake (10.1.1)
|
11
|
+
rspec (2.14.1)
|
12
|
+
rspec-core (~> 2.14.0)
|
13
|
+
rspec-expectations (~> 2.14.0)
|
14
|
+
rspec-mocks (~> 2.14.0)
|
15
|
+
rspec-core (2.14.7)
|
16
|
+
rspec-expectations (2.14.4)
|
17
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
18
|
+
rspec-mocks (2.14.4)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
java
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
cadet!
|
25
|
+
rake
|
26
|
+
rspec
|
data/README.md
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
new! support for batchinsert mode!
|
2
|
+
just open the database with Cadet::BatchInserter::BatchInserter.open() instead of Cadet::Session.open()!
|
3
|
+
this no-ops transaction, simply yielding to the supplied block.
|
4
|
+
|
5
|
+
super simple. you dont even need to download neo4j.
|
6
|
+
|
7
|
+
1. Gemfile
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'cadet', git: 'https://github.com/karabijavad/cadet'
|
11
|
+
```
|
12
|
+
2. ``` bundle install ```
|
13
|
+
3. cadet-example.rb
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
|
17
|
+
require 'cadet'
|
18
|
+
require 'yaml'
|
19
|
+
|
20
|
+
data = YAML.load_file('legislators-current.yaml')
|
21
|
+
|
22
|
+
#open the database, db is now used to interact with the database
|
23
|
+
db = Cadet::Session.open("neo4j-community-2.0.0/data/graph.db")
|
24
|
+
|
25
|
+
db.transaction do
|
26
|
+
begin
|
27
|
+
#create unique constrains on each of these Labels' 'name' property
|
28
|
+
["Legislator", "Party", "Gender", "State"].each {|v| db.constraint v, "name"}
|
29
|
+
rescue Exception => e # ignore, probably just saying the constraint already exists
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
data.each do |leg|
|
35
|
+
#begin a transaction. the transaction will automatically finish at the end of the provided block
|
36
|
+
db.transaction do
|
37
|
+
|
38
|
+
#get_a_X(property, value) will find a node labeled 'X', with a property of key 'property', and value 'value'
|
39
|
+
#if the node is not found, it will create it and return it.
|
40
|
+
l = db.get_a_Legislator "name", leg["name"]["official_full"] || "no name"
|
41
|
+
p = db.get_a_Party "name", leg["terms"].first["party"]
|
42
|
+
g = db.get_a_Gender "name", leg["bio"]["gender"]
|
43
|
+
s = db.get_a_State "name", leg["terms"].first["state"]
|
44
|
+
|
45
|
+
# automatically create relationships, where the relationship type is the method's name
|
46
|
+
l.party_to p
|
47
|
+
l.gender_to g
|
48
|
+
l.represents_to s
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
#close the database
|
54
|
+
db.close()
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
```
|
59
|
+
4. ```bundle exec ruby```
|
data/Rakefile
ADDED
data/cadet.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require "cadet/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "cadet"
|
8
|
+
s.version = Cadet::VERSION
|
9
|
+
s.platform = "java"
|
10
|
+
s.authors = "Javad Karabi"
|
11
|
+
s.email = "karabijavad@gmail.com"
|
12
|
+
s.homepage = "https://github.com/karabijavad/cadet"
|
13
|
+
s.summary = "ruby wrapper to Neo4j java API"
|
14
|
+
s.description = "ruby wrapper to Neo4j java API"
|
15
|
+
s.license = 'MIT'
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
s.add_development_dependency 'rake'
|
20
|
+
s.add_development_dependency 'rspec'
|
21
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Cadet
|
2
|
+
module BatchInserter
|
3
|
+
class BatchInserter < Cadet::Session
|
4
|
+
include_package "org.neo4j.unsafe.batchinsert"
|
5
|
+
include_package "org.neo4j.index.impl.lucene"
|
6
|
+
|
7
|
+
def initialize(db)
|
8
|
+
@db = db
|
9
|
+
#@index_provider = LuceneBatchInserterIndexProviderNewImpl.new(db)
|
10
|
+
@index_provider = Cadet::IndexProvider.new(db)
|
11
|
+
end
|
12
|
+
|
13
|
+
def close
|
14
|
+
@index_provider.shutdown
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.open(location)
|
19
|
+
new BatchInserters.inserter(location)
|
20
|
+
end
|
21
|
+
|
22
|
+
def transaction
|
23
|
+
yield
|
24
|
+
end
|
25
|
+
|
26
|
+
def constraint(label, property)
|
27
|
+
index = @index_provider.nodeIndex label, {"type" => "exact"}
|
28
|
+
index.setCacheCapacity property, 100000
|
29
|
+
end
|
30
|
+
|
31
|
+
def find_node_by_label_and_property(label, property, value)
|
32
|
+
index = @index_provider.nodeIndex label, {"type" => "exact"}
|
33
|
+
result = org.neo4j.helpers.collection.IteratorUtil.firstOrNull(index.get(property, value))
|
34
|
+
if result
|
35
|
+
return Cadet::BatchInserter::Node.new(@db, result)
|
36
|
+
else
|
37
|
+
return nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_node_with(label, props={})
|
42
|
+
n = Cadet::BatchInserter::Node.make @db, props, label
|
43
|
+
|
44
|
+
index = @index_provider.nodeIndex label, {"type" => "exact"}
|
45
|
+
index.add(n.node, props)
|
46
|
+
n
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Cadet
|
2
|
+
module BatchInserter
|
3
|
+
class Node < Cadet::Node
|
4
|
+
attr_accessor :node
|
5
|
+
|
6
|
+
def initialize(db, node)
|
7
|
+
@db = db
|
8
|
+
@node = node
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.make(db, props = {}, label = '')
|
12
|
+
node = db.createNode props, org.neo4j.graphdb.DynamicLabel.label(label)
|
13
|
+
new db, node
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_outgoing(to, type, properties = {})
|
17
|
+
rel_type = org.neo4j.graphdb.DynamicRelationshipType.withName(type)
|
18
|
+
@db.createRelationship(@node, to.node, rel_type, properties)
|
19
|
+
end
|
20
|
+
def set_properties(props)
|
21
|
+
@db.setNodeProperties(@node, props)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Cadet
|
2
|
+
class IndexProvider
|
3
|
+
def initialize(db)
|
4
|
+
@db = db
|
5
|
+
@indexes = {}
|
6
|
+
@lucene_index = org.neo4j.index.impl.lucene.LuceneBatchInserterIndexProviderNewImpl.new(db)
|
7
|
+
end
|
8
|
+
def nodeIndex(name, type)
|
9
|
+
@indexes[name] ||= Cadet::Index.new(@lucene_index, name, type)
|
10
|
+
end
|
11
|
+
def shutdown
|
12
|
+
@indexes.each do |name, index|
|
13
|
+
index.flush
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module Cadet
|
20
|
+
class Index
|
21
|
+
def initialize(lucene_index, name, type)
|
22
|
+
@name = name
|
23
|
+
@type = type
|
24
|
+
@index = {}
|
25
|
+
@lucene_index = lucene_index
|
26
|
+
end
|
27
|
+
def setCacheCapacity(property, capacity)
|
28
|
+
end
|
29
|
+
def add(node, prop)
|
30
|
+
@index[prop.first[0]] ||= {}
|
31
|
+
@index[prop.first[0]][prop.first[1]] = node
|
32
|
+
end
|
33
|
+
def get(property, value)
|
34
|
+
@index[property] ||= {}
|
35
|
+
[@index[property][value]]
|
36
|
+
end
|
37
|
+
def flush
|
38
|
+
index = @lucene_index.nodeIndex @name, @type
|
39
|
+
@index.each do |property, mappings|
|
40
|
+
mappings.each do |value, node|
|
41
|
+
index.add(node, {property => value})
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/cadet/node.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
module Cadet
|
2
|
+
class Node
|
3
|
+
attr_accessor :node
|
4
|
+
include_package "org.neo4j.graphdb"
|
5
|
+
|
6
|
+
directions = {
|
7
|
+
"in" => Direction[0],
|
8
|
+
"out" => Direction[1],
|
9
|
+
"both" => Direction[2]
|
10
|
+
}
|
11
|
+
|
12
|
+
def initialize(node)
|
13
|
+
@node = node
|
14
|
+
end
|
15
|
+
def create_outgoing(to, type)
|
16
|
+
@node.createRelationshipTo(to.node, DynamicRelationshipType.withName(type))
|
17
|
+
end
|
18
|
+
def add_label(label)
|
19
|
+
@node.addLabel(DynamicLabel.label(label))
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def method_missing(name, *args)
|
24
|
+
if name.to_s.end_with? "="
|
25
|
+
set_property name.to_s.gsub(/=$/, ''), args[0]
|
26
|
+
elsif name.to_s.end_with? "_to"
|
27
|
+
create_outgoing args[0], name.to_s.gsub(/_to$/, '')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_single_relationship(type, dir="both")
|
32
|
+
@node.getSingleRelationship DynamicRelationshipType.withName(type), @directions[dir]
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_all_relationships
|
36
|
+
@node.getRelationships()
|
37
|
+
end
|
38
|
+
def get_all_relationships_of_type(type)
|
39
|
+
@node.getRelationships(DynamicRelationshipType.withName(type))
|
40
|
+
end
|
41
|
+
def get_all_relationships_of_type_and_dir(type, dir)
|
42
|
+
@node.getRelationships DynamicRelationshipType.withName(type), @directions[dir]
|
43
|
+
end
|
44
|
+
|
45
|
+
def set_property(property, value)
|
46
|
+
@node.setProperty(property, value)
|
47
|
+
end
|
48
|
+
def set_properties(props)
|
49
|
+
props.each do |k,v|
|
50
|
+
set_property(k.to_s, v)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module Cadet
|
2
|
+
class Session
|
3
|
+
include_package "org.neo4j.graphdb"
|
4
|
+
include_package "org.neo4j.graphdb.factory"
|
5
|
+
include_package "org.neo4j.unsafe.batchinsert"
|
6
|
+
|
7
|
+
def initialize(db)
|
8
|
+
@db = db
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.open(location)
|
12
|
+
new GraphDatabaseFactory.new.newEmbeddedDatabase(location)
|
13
|
+
end
|
14
|
+
def close
|
15
|
+
@db.shutdown
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_empty_node
|
19
|
+
Cadet::Node.new @db.createNode
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_node_with(label, props = {})
|
23
|
+
n = Cadet::Node.new @db.createNode
|
24
|
+
n.add_label label
|
25
|
+
n.set_properties props
|
26
|
+
n
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_node_by_id(id)
|
30
|
+
Cadet::Node.new @db.getNodeById(id)
|
31
|
+
end
|
32
|
+
|
33
|
+
def find_nodes_by_label_and_property(label, key, value)
|
34
|
+
result = []
|
35
|
+
@db.findNodesByLabelAndProperty(DynamicLabel.label(label), key, value).each do |node|
|
36
|
+
result << Cadet::Node.new(node)
|
37
|
+
end
|
38
|
+
result
|
39
|
+
end
|
40
|
+
def find_node_by_label_and_property(label, key, value)
|
41
|
+
node = org.neo4j.helpers.collection.IteratorUtil.firstOrNull @db.findNodesByLabelAndProperty(DynamicLabel.label(label), key, value)
|
42
|
+
node ? Cadet::Node.new(node) : null
|
43
|
+
end
|
44
|
+
|
45
|
+
def transaction
|
46
|
+
tx = @db.beginTx
|
47
|
+
begin
|
48
|
+
yield tx
|
49
|
+
tx.success
|
50
|
+
ensure
|
51
|
+
tx.close
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def constraint(label, property)
|
56
|
+
@db.schema
|
57
|
+
.constraintFor(DynamicLabel.label(label))
|
58
|
+
.assertPropertyIsUnique(property)
|
59
|
+
.create
|
60
|
+
end
|
61
|
+
|
62
|
+
def method_missing(name, *args)
|
63
|
+
if match = /get_a_([A-Z][A-Za-z]*)$/.match(name.to_s)
|
64
|
+
return get_a_node match.captures.first, args[0], args[1]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_a_node(label, property, value, default_values = {})
|
69
|
+
n = find_node_by_label_and_property(label, property, value)
|
70
|
+
if n.nil?
|
71
|
+
h = {}
|
72
|
+
h[property] = value
|
73
|
+
n = create_node_with label, h.merge(default_values)
|
74
|
+
end
|
75
|
+
n
|
76
|
+
end
|
77
|
+
|
78
|
+
def traverser
|
79
|
+
Cadet::Traversal::Description.new @db.traversalDescription
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Cadet
|
2
|
+
module Traversal
|
3
|
+
class Description
|
4
|
+
include_package "org.neo4j.graphdb"
|
5
|
+
|
6
|
+
def initialize(description)
|
7
|
+
@description = description
|
8
|
+
self
|
9
|
+
end
|
10
|
+
|
11
|
+
def relationships(relationship_names)
|
12
|
+
relationship_names.each do |rel_name|
|
13
|
+
@description = @description.relationships DynamicRelationshipType.withName(rel_name)
|
14
|
+
end
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
def evaluator(evaluator)
|
19
|
+
@description = @description.evaluator evaluator.evaluator
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def traverse(start_node)
|
24
|
+
@description.traverse(start_node.node).map do |path|
|
25
|
+
Cadet::Traversal::Path.new path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/cadet.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'java'
|
2
|
+
|
3
|
+
["concurrentlinkedhashmap-lru-1.3.1.jar",
|
4
|
+
"geronimo-jta_1.1_spec-1.1.1.jar",
|
5
|
+
"lucene-core-3.6.2.jar",
|
6
|
+
"neo4j-cypher-2.0.0.jar",
|
7
|
+
"neo4j-cypher-commons-2.0.0.jar",
|
8
|
+
"neo4j-cypher-compiler-1.9-2.0.0.jar",
|
9
|
+
"neo4j-cypher-compiler-2.0-2.0.0.jar",
|
10
|
+
"neo4j-graph-algo-2.0.0.jar",
|
11
|
+
"neo4j-graph-matching-2.0.0.jar",
|
12
|
+
"neo4j-jmx-2.0.0.jar",
|
13
|
+
"neo4j-kernel-2.0.0.jar",
|
14
|
+
"neo4j-lucene-index-2.0.0.jar",
|
15
|
+
"neo4j-shell-2.0.0.jar",
|
16
|
+
"neo4j-udc-2.0.0.jar",
|
17
|
+
"org.apache.servicemix.bundles.jline-0.9.94_1.jar",
|
18
|
+
"parboiled-core-1.1.6.jar",
|
19
|
+
"parboiled-scala_2.10-1.1.6.jar",
|
20
|
+
"scala-library-2.10.3.jar",
|
21
|
+
"server-api-2.0.0.jar"].each { |file| require "neo4j/#{file}" }
|
22
|
+
|
23
|
+
require 'cadet/session'
|
24
|
+
require 'cadet/node'
|
25
|
+
require 'cadet/traversal/description'
|
26
|
+
require 'cadet/traversal/evaluator'
|
27
|
+
require 'cadet/traversal/path'
|
28
|
+
require 'cadet/batch_inserter/batch_inserter'
|
29
|
+
require 'cadet/batch_inserter/node'
|
30
|
+
require 'cadet/index_provider/index_provider'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Neo4j Libraries
|
2
|
+
=======================================
|
3
|
+
|
4
|
+
Neo4j core java libraries. These can be used for embedded development,
|
5
|
+
but are also required for operation of the server.
|
6
|
+
|
7
|
+
Copy them, link them, or include them on the class path, but do **not**
|
8
|
+
delete them, because that will make the server sad.
|
9
|
+
|
10
|
+
For more information, see the [component documentation](/doc/components.txt)
|
11
|
+
|
12
|
+
References
|
13
|
+
----------
|
14
|
+
|
15
|
+
* [component documentation](/doc/components.txt) -- local documentation
|
16
|
+
* [Neo4j Components](http://components.neo4j.org) -- comprehensive online docs
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'cadet'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cadet do
|
4
|
+
|
5
|
+
it "should create a node, (and also test that transaction works in the process)" do
|
6
|
+
db = Cadet::Session.open("./tmp")
|
7
|
+
db.transaction do
|
8
|
+
n = db.create_node
|
9
|
+
end
|
10
|
+
db.close
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should _not_ create a node, as we are not in a transaction" do
|
14
|
+
db = Cadet::Session.open("./tmp")
|
15
|
+
expect { db.create_node }.to raise_error(org.neo4j.graphdb.NotInTransactionException)
|
16
|
+
db.close
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cadet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- Javad Karabi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - '>='
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '0'
|
25
|
+
prerelease: false
|
26
|
+
type: :development
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
prerelease: false
|
40
|
+
type: :development
|
41
|
+
description: ruby wrapper to Neo4j java API
|
42
|
+
email: karabijavad@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- .gitignore
|
48
|
+
- Gemfile
|
49
|
+
- Gemfile.lock
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- cadet.gemspec
|
53
|
+
- lib/cadet.rb
|
54
|
+
- lib/cadet/batch_inserter/batch_inserter.rb
|
55
|
+
- lib/cadet/batch_inserter/node.rb
|
56
|
+
- lib/cadet/index_provider/index_provider.rb
|
57
|
+
- lib/cadet/node.rb
|
58
|
+
- lib/cadet/session.rb
|
59
|
+
- lib/cadet/traversal/description.rb
|
60
|
+
- lib/cadet/traversal/evaluator.rb
|
61
|
+
- lib/cadet/traversal/path.rb
|
62
|
+
- lib/cadet/version.rb
|
63
|
+
- lib/neo4j/README.txt
|
64
|
+
- lib/neo4j/concurrentlinkedhashmap-lru-1.3.1.jar
|
65
|
+
- lib/neo4j/geronimo-jta_1.1_spec-1.1.1.jar
|
66
|
+
- lib/neo4j/lucene-core-3.6.2.jar
|
67
|
+
- lib/neo4j/neo4j-cypher-2.0.0.jar
|
68
|
+
- lib/neo4j/neo4j-cypher-commons-2.0.0.jar
|
69
|
+
- lib/neo4j/neo4j-cypher-compiler-1.9-2.0.0.jar
|
70
|
+
- lib/neo4j/neo4j-cypher-compiler-2.0-2.0.0.jar
|
71
|
+
- lib/neo4j/neo4j-graph-algo-2.0.0.jar
|
72
|
+
- lib/neo4j/neo4j-graph-matching-2.0.0.jar
|
73
|
+
- lib/neo4j/neo4j-jmx-2.0.0.jar
|
74
|
+
- lib/neo4j/neo4j-kernel-2.0.0.jar
|
75
|
+
- lib/neo4j/neo4j-lucene-index-2.0.0.jar
|
76
|
+
- lib/neo4j/neo4j-shell-2.0.0.jar
|
77
|
+
- lib/neo4j/neo4j-udc-2.0.0.jar
|
78
|
+
- lib/neo4j/org.apache.servicemix.bundles.jline-0.9.94_1.jar
|
79
|
+
- lib/neo4j/parboiled-core-1.1.6.jar
|
80
|
+
- lib/neo4j/parboiled-scala_2.10-1.1.6.jar
|
81
|
+
- lib/neo4j/scala-library-2.10.3.jar
|
82
|
+
- lib/neo4j/server-api-2.0.0.jar
|
83
|
+
- spec/spec_helper.rb
|
84
|
+
- spec/unit/cadet_spec.rb
|
85
|
+
homepage: https://github.com/karabijavad/cadet
|
86
|
+
licenses:
|
87
|
+
- MIT
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options: []
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubyforge_project:
|
105
|
+
rubygems_version: 2.2.1
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: ruby wrapper to Neo4j java API
|
109
|
+
test_files: []
|