neography 0.0.20 → 0.0.21
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.
- data/README.rdoc +21 -9
- data/lib/neography/node.rb +2 -2
- data/lib/neography/node_traverser.rb +1 -1
- data/lib/neography/rest.rb +2 -7
- data/lib/neography/tasks.rb +1 -1
- data/lib/neography/version.rb +1 -1
- data/spec/integration/rest_batch_spec.rb +7 -0
- data/spec/integration/rest_node_spec.rb +7 -0
- metadata +118 -73
data/README.rdoc
CHANGED
@@ -10,14 +10,23 @@ A complement to Neography is the Neology Gem at https://github.com/lordkada/neol
|
|
10
10
|
|
11
11
|
An alternative is the Architect4r Gem at https://github.com/namxam/architect4r by Maximilian Schulz
|
12
12
|
|
13
|
+
=== Neography in the Wild
|
13
14
|
|
14
|
-
|
15
|
+
* {Vouched}[http://getvouched.com]
|
16
|
+
* {Neovigator}[http://neovigator.herokuapp.com] fork it at https://github.com/maxdemarzi/neovigator
|
17
|
+
* {Neoflix}[http://neoflix.herokuapp.com] fork it at https://github.com/maxdemarzi/neoflix
|
18
|
+
|
19
|
+
=== Getting started with Neography
|
20
|
+
|
21
|
+
* {Getting Started with Ruby and Neo4j}[http://maxdemarzi.com/2012/01/04/getting-started-with-ruby-and-neo4j/]
|
22
|
+
* {Graph visualization with Neo4j}[http://maxdemarzi.com/2012/01/11/graph-visualization-and-neo4j/]
|
23
|
+
* {Neo4j on Heroku}[http://maxdemarzi.com/2012/01/13/neo4j-on-heroku-part-one/]
|
15
24
|
|
16
|
-
gem install 'neography', '0.0.14' # for version 1.4 of Neo4j
|
17
25
|
|
18
|
-
|
26
|
+
=== Installation
|
27
|
+
|
28
|
+
gem install 'neography'
|
19
29
|
|
20
|
-
gem install 'neography' # for version 1.5M of Neo4j or higher
|
21
30
|
|
22
31
|
After that, in your ruby script:
|
23
32
|
|
@@ -46,7 +55,7 @@ Just add gem 'neography' to your Gemfile and run bundle install.
|
|
46
55
|
The following tasks will be available to you:
|
47
56
|
|
48
57
|
rake neo4j:install # Install Neo4j to the neo4j directory under your project
|
49
|
-
rake neo4j:install[community,1.6.
|
58
|
+
rake neo4j:install[community,1.6.M03] # Install Neo4j Community edition, version 1.6.M03
|
50
59
|
rake neo4j:install[advanced,1.5] # Install Neo4j Advanced edition, version 1.5
|
51
60
|
rake neo4j:install[enterprise,1.5] # Install Neo4j Enterprise edition, version 1.5
|
52
61
|
rake neo4j:start # Start Neo4j
|
@@ -172,18 +181,21 @@ Batch (in progress):
|
|
172
181
|
@neo.batch [:get_relationship, rel1],
|
173
182
|
[:get_relationship, rel2] # Gets two relationships in a batch
|
174
183
|
@neo.batch [:create_relationship, "friends",
|
175
|
-
node1, node2, {:since => "high school"}]
|
184
|
+
node1, node2, {:since => "high school"}],
|
176
185
|
[:create_relationship, "friends",
|
177
186
|
node1, node3, {:since => "college"}] # Creates two relationships in a batch
|
178
187
|
@neo.batch [:create_node, {"name" => "Max"}],
|
179
188
|
[:create_node, {"name" => "Marc"}], # Creates two nodes and index them
|
180
|
-
[:add_node_to_index, "test_node_index", key, value, "{0}"]
|
181
|
-
[:add_node_to_index, "test_node_index", key, value, "{1}"]
|
189
|
+
[:add_node_to_index, "test_node_index", key, value, "{0}"],
|
190
|
+
[:add_node_to_index, "test_node_index", key, value, "{1}"],
|
182
191
|
[:create_relationship, "friends", # and create a relationship for those
|
183
|
-
"{0}", "{1}", {:since => "college"}]
|
192
|
+
"{0}", "{1}", {:since => "college"}], # newly created nodes
|
184
193
|
[:add_relationship_to_index,
|
185
194
|
"test_relationship_index", key, value, "{4}"] # and index the new relationship
|
186
195
|
|
196
|
+
@neo.batch *[[:create_node, {"name" => "Max"}],
|
197
|
+
[:create_node, {"name" => "Marc"}]] # Use the Splat (*) with Arrays of Arrays
|
198
|
+
|
187
199
|
See http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html for Neo4j Batch operations documentation.
|
188
200
|
|
189
201
|
Experimental:
|
data/lib/neography/node.rb
CHANGED
@@ -13,7 +13,7 @@ module Neography
|
|
13
13
|
# the arguments can be an hash of properties to set or a rest instance
|
14
14
|
props = (args[0].respond_to?(:each_pair) && args[0]) || args[1]
|
15
15
|
db = (args[0].is_a?(Neography::Rest) && args[0]) || args[1] || Neography::Rest.new
|
16
|
-
node =
|
16
|
+
node = self.new(db.create_node(props))
|
17
17
|
node.neo_server = db
|
18
18
|
node
|
19
19
|
end
|
@@ -25,7 +25,7 @@ module Neography
|
|
25
25
|
# a db instance can be given, it is the first argument or the second
|
26
26
|
db = (args[0].is_a?(Neography::Rest) && args[0]) || args[1] || Neography::Rest.new
|
27
27
|
node = db.get_node(node)
|
28
|
-
node =
|
28
|
+
node = self.new(node) unless node.nil?
|
29
29
|
node.neo_server = db unless node.nil?
|
30
30
|
node
|
31
31
|
end
|
data/lib/neography/rest.rb
CHANGED
@@ -4,7 +4,7 @@ module Neography
|
|
4
4
|
|
5
5
|
attr_accessor :protocol, :server, :port, :directory, :log_file, :log_enabled, :logger, :max_threads, :authentication, :username, :password
|
6
6
|
|
7
|
-
def initialize(options={})
|
7
|
+
def initialize(options=ENV['NEO4J_URL'] || {})
|
8
8
|
init = {:protocol => Neography::Config.protocol,
|
9
9
|
:server => Neography::Config.server,
|
10
10
|
:port => Neography::Config.port,
|
@@ -59,7 +59,7 @@ module Neography
|
|
59
59
|
|
60
60
|
def create_node(*args)
|
61
61
|
if args[0].respond_to?(:each_pair) && args[0]
|
62
|
-
options = { :body => args[0].to_json, :headers => {'Content-Type' => 'application/json'} }
|
62
|
+
options = { :body => args[0].delete_if { |k, v| v.nil? }.to_json, :headers => {'Content-Type' => 'application/json'} }
|
63
63
|
post("/node", options)
|
64
64
|
else
|
65
65
|
post("/node")
|
@@ -341,11 +341,6 @@ module Neography
|
|
341
341
|
paths = post("/node/#{get_id(from)}/paths", options) || Array.new
|
342
342
|
end
|
343
343
|
|
344
|
-
def execute_query_old(query)
|
345
|
-
options = { :body => {:query => query}.to_json, :headers => {'Content-Type' => 'application/json'} }
|
346
|
-
result = post("/ext/CypherPlugin/graphdb/execute_query", options)
|
347
|
-
end
|
348
|
-
|
349
344
|
def execute_query(query, params = {})
|
350
345
|
options = { :body => {:query => query, :params => params}.to_json, :headers => {'Content-Type' => 'application/json'} }
|
351
346
|
result = post("/ext/CypherPlugin/graphdb/execute_query", options)
|
data/lib/neography/tasks.rb
CHANGED
@@ -4,7 +4,7 @@ require 'os'
|
|
4
4
|
namespace :neo4j do
|
5
5
|
desc "Install Neo4j"
|
6
6
|
task :install, :edition, :version do |t, args|
|
7
|
-
args.with_defaults(:edition => "community", :version => "1.6
|
7
|
+
args.with_defaults(:edition => "community", :version => "1.6")
|
8
8
|
puts "Installing Neo4j-#{args[:edition]}-#{args[:version]}"
|
9
9
|
|
10
10
|
if OS::Underlying.windows?
|
data/lib/neography/version.rb
CHANGED
@@ -47,6 +47,13 @@ describe Neography::Rest do
|
|
47
47
|
batch_result.last["body"]["data"]["name"].should == "Marc"
|
48
48
|
end
|
49
49
|
|
50
|
+
it "can create multiple nodes given an *array" do
|
51
|
+
batch_result = @neo.batch *[[:create_node, {"name" => "Max"}], [:create_node, {"name" => "Marc"}]]
|
52
|
+
batch_result.first["body"]["data"]["name"].should == "Max"
|
53
|
+
batch_result.last["body"]["data"]["name"].should == "Marc"
|
54
|
+
end
|
55
|
+
|
56
|
+
|
50
57
|
it "can update a property of a node" do
|
51
58
|
new_node = @neo.create_node("name" => "Max")
|
52
59
|
batch_result = @neo.batch [:set_node_property, new_node, {"name" => "Marc"}]
|
@@ -24,6 +24,13 @@ describe Neography::Rest do
|
|
24
24
|
new_node["data"]["name"].should == "Max"
|
25
25
|
end
|
26
26
|
|
27
|
+
it "can create a node with nil properties" do
|
28
|
+
new_node = @neo.create_node("name" => "Max", "age" => nil )
|
29
|
+
new_node["data"]["name"].should == "Max"
|
30
|
+
new_node["data"]["age"].should be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
|
27
34
|
it "can create a node with more than one property" do
|
28
35
|
new_node = @neo.create_node("age" => 31, "name" => "Max")
|
29
36
|
new_node["data"]["name"].should == "Max"
|
metadata
CHANGED
@@ -1,100 +1,135 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: neography
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 21
|
10
|
+
version: 0.0.21
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Max De Marzi
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-01-25 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
24
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
22
32
|
type: :development
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
26
35
|
name: net-http-spy
|
27
|
-
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
38
|
none: false
|
29
|
-
requirements:
|
30
|
-
- - =
|
31
|
-
- !ruby/object:Gem::Version
|
39
|
+
requirements:
|
40
|
+
- - "="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 21
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 2
|
46
|
+
- 1
|
32
47
|
version: 0.2.1
|
33
48
|
type: :development
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
37
51
|
name: rake
|
38
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
54
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 49
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 8
|
62
|
+
- 7
|
43
63
|
version: 0.8.7
|
44
64
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
48
67
|
name: httparty
|
49
|
-
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
70
|
none: false
|
51
|
-
requirements:
|
71
|
+
requirements:
|
52
72
|
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 19
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
- 7
|
78
|
+
- 8
|
54
79
|
version: 0.7.8
|
55
80
|
type: :runtime
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
59
83
|
name: json
|
60
|
-
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
61
86
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 3
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
version: "0"
|
66
94
|
type: :runtime
|
67
|
-
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
95
|
+
version_requirements: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
70
97
|
name: os
|
71
|
-
|
98
|
+
prerelease: false
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
72
100
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
77
108
|
type: :runtime
|
78
|
-
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
109
|
+
version_requirements: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
81
111
|
name: rubyzip
|
82
|
-
|
112
|
+
prerelease: false
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
83
114
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
hash: 3
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
version: "0"
|
88
122
|
type: :runtime
|
89
|
-
|
90
|
-
|
91
|
-
description: A Ruby wrapper to the Neo4j Rest API see http://components.neo4j.org/neo4j-rest/
|
92
|
-
for more details.
|
123
|
+
version_requirements: *id007
|
124
|
+
description: A Ruby wrapper to the Neo4j Rest API see http://components.neo4j.org/neo4j-rest/ for more details.
|
93
125
|
email: maxdemarzi@gmail.com
|
94
126
|
executables: []
|
127
|
+
|
95
128
|
extensions: []
|
129
|
+
|
96
130
|
extra_rdoc_files: []
|
97
|
-
|
131
|
+
|
132
|
+
files:
|
98
133
|
- .gitignore
|
99
134
|
- .project
|
100
135
|
- .travis.yml
|
@@ -149,26 +184,36 @@ files:
|
|
149
184
|
- spec/spec_helper.rb
|
150
185
|
homepage: http://rubygems.org/gems/neography
|
151
186
|
licenses: []
|
187
|
+
|
152
188
|
post_install_message:
|
153
189
|
rdoc_options: []
|
154
|
-
|
190
|
+
|
191
|
+
require_paths:
|
155
192
|
- lib
|
156
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
193
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
157
194
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
|
162
|
-
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
hash: 3
|
199
|
+
segments:
|
200
|
+
- 0
|
201
|
+
version: "0"
|
202
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
203
|
none: false
|
164
|
-
requirements:
|
165
|
-
- -
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
|
204
|
+
requirements:
|
205
|
+
- - ">="
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
hash: 3
|
208
|
+
segments:
|
209
|
+
- 0
|
210
|
+
version: "0"
|
168
211
|
requirements: []
|
212
|
+
|
169
213
|
rubyforge_project: neography
|
170
|
-
rubygems_version: 1.8.
|
214
|
+
rubygems_version: 1.8.9
|
171
215
|
signing_key:
|
172
216
|
specification_version: 3
|
173
217
|
summary: ruby wrapper to Neo4j Rest API
|
174
218
|
test_files: []
|
219
|
+
|