neography 0.0.20 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
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
- === Installation
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
- or
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.M02] # Install Neo4j Community edition, version 1.6.M02
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"}] # newly created nodes
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:
@@ -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 = Neography::Node.new(db.create_node(props))
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 = Neography::Node.new(node) unless node.nil?
28
+ node = self.new(node) unless node.nil?
29
29
  node.neo_server = db unless node.nil?
30
30
  node
31
31
  end
@@ -101,7 +101,7 @@ module Neography
101
101
 
102
102
  def each
103
103
  iterator.each do |i|
104
- node = Neography::Node.new(i)
104
+ node = @from.class.new(i)
105
105
  node.neo_server = @from.neo_server
106
106
  yield node
107
107
  end
@@ -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)
@@ -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.M02")
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?
@@ -1,3 +1,3 @@
1
1
  module Neography
2
- VERSION = "0.0.20"
2
+ VERSION = "0.0.21"
3
3
  end
@@ -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
- version: 0.0.20
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
- date: 2012-01-07 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-01-25 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: rspec
16
- requirement: &73293220 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
22
32
  type: :development
23
- prerelease: false
24
- version_requirements: *73293220
25
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
26
35
  name: net-http-spy
27
- requirement: &73292790 !ruby/object:Gem::Requirement
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
- prerelease: false
35
- version_requirements: *73292790
36
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
37
51
  name: rake
38
- requirement: &73292370 !ruby/object:Gem::Requirement
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
- prerelease: false
46
- version_requirements: *73292370
47
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
48
67
  name: httparty
49
- requirement: &73291920 !ruby/object:Gem::Requirement
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
- prerelease: false
57
- version_requirements: *73291920
58
- - !ruby/object:Gem::Dependency
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
59
83
  name: json
60
- requirement: &73291510 !ruby/object:Gem::Requirement
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
61
86
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
66
94
  type: :runtime
67
- prerelease: false
68
- version_requirements: *73291510
69
- - !ruby/object:Gem::Dependency
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
70
97
  name: os
71
- requirement: &73290970 !ruby/object:Gem::Requirement
98
+ prerelease: false
99
+ requirement: &id006 !ruby/object:Gem::Requirement
72
100
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
77
108
  type: :runtime
78
- prerelease: false
79
- version_requirements: *73290970
80
- - !ruby/object:Gem::Dependency
109
+ version_requirements: *id006
110
+ - !ruby/object:Gem::Dependency
81
111
  name: rubyzip
82
- requirement: &73290680 !ruby/object:Gem::Requirement
112
+ prerelease: false
113
+ requirement: &id007 !ruby/object:Gem::Requirement
83
114
  none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
88
122
  type: :runtime
89
- prerelease: false
90
- version_requirements: *73290680
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
- files:
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
- require_paths:
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
- version: '0'
162
- required_rubygems_version: !ruby/object:Gem::Requirement
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
- version: '0'
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.10
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
+