neon 0.1.0

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.
@@ -0,0 +1,47 @@
1
+ module Neon
2
+ module Transaction
3
+ class Rest < Placebo
4
+ def initialize(session)
5
+ @session = session
6
+ @tx = @session.neo.begin_transaction
7
+ # Mark for failure by default
8
+ failure
9
+ end
10
+
11
+ def keep_alive
12
+ @session.neo.keep_transaction @tx
13
+ end
14
+
15
+ def run_query(query, params={}, formats=nil)
16
+ query = [query, params] unless query.is_a?(Array) || !params.empty?
17
+ query << formats if formats.is_a?(Array)
18
+ @session.neo.in_transaction(@tx, query)["results"]
19
+ end
20
+
21
+ def close
22
+ if success?
23
+ # puts "Commited tx"
24
+ @session.neo.commit_transaction @tx
25
+ else
26
+ # puts "Rollabcked tx"
27
+ @session.neo.rollback_transaction @tx
28
+ end
29
+ id = self.class.id_mapper(@session)
30
+ Thread.current[id] = nil if Thread.current[id] == self
31
+ end
32
+
33
+ class << self
34
+ def begin_tx(session)
35
+ id = id_mapper(session)
36
+ # Fetch the transaction associated with session. If none is found then begin a new one.
37
+ Thread.current[id] || Thread.current[id] = new(session)
38
+ end
39
+
40
+ # Identity mapper
41
+ def id_mapper(session)
42
+ "Neon::#{session}"
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,7 @@
1
+ module Neon
2
+ # Version of the neo4j gem
3
+ MAJOR = 0
4
+ MINOR = 1
5
+ PATCH = 0
6
+ VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
+ end
@@ -0,0 +1,139 @@
1
+ # borrowed from architect4r
2
+ require 'os'
3
+
4
+ namespace :neo4j do
5
+ desc "Install Neo4j"
6
+ task :install, :edition, :version do |t, args|
7
+ args.with_defaults(:edition => "community", :version => "2.0.0")
8
+ puts "Installing Neo4j-#{args[:edition]}-#{args[:version]}"
9
+
10
+ if OS::Underlying.windows?
11
+ # Download Neo4j
12
+ unless File.exist?('neo4j.zip')
13
+ df = File.open('neo4j.zip', 'wb')
14
+ begin
15
+ df << HTTParty.get("http://dist.neo4j.org/neo4j-#{args[:edition]}-#{args[:version]}-windows.zip")
16
+ ensure
17
+ df.close()
18
+ end
19
+ end
20
+
21
+ # Extract and move to neo4j directory
22
+ unless File.exist?('neo4j')
23
+ Zip::ZipFile.open('neo4j.zip') do |zip_file|
24
+ zip_file.each do |f|
25
+ f_path=File.join(".", f.name)
26
+ FileUtils.mkdir_p(File.dirname(f_path))
27
+ begin
28
+ zip_file.extract(f, f_path) unless File.exist?(f_path)
29
+ rescue
30
+ puts f.name + " failed to extract."
31
+ end
32
+ end
33
+ end
34
+ FileUtils.mv "neo4j-#{args[:edition]}-#{args[:version]}", "neo4j"
35
+ end
36
+
37
+ # Install if running with Admin Privileges
38
+ if %x[reg query "HKU\\S-1-5-19"].size > 0
39
+ puts %x[neo4j/bin/neo4j install]
40
+ puts "Neo4j Installed as a service."
41
+ end
42
+
43
+ else
44
+ file_name = "neo4j-#{args[:edition]}-#{args[:version]}-unix.tar.gz"
45
+ unless File.exist?(file_name)
46
+ puts %x[wget http://dist.neo4j.org/#{file_name}]
47
+ end
48
+ puts %x[tar -xvzf #{file_name}]
49
+ puts %x[mv neo4j-#{args[:edition]}-#{args[:version]} neo4j]
50
+ puts "Neo4j Installed in to neo4j directory."
51
+ # Make a duplicate database
52
+ puts %x[mkdir another_neo4j]
53
+ puts %x[cp -r neo4j/* another_neo4j]
54
+ end
55
+ # Replace default port 7474 with 4747 and HTTPS port 7473 with 4746
56
+ replace = File.read("another_neo4j/conf/neo4j-server.properties").gsub(/7474/, "4747").sub(/7473/, "4746")
57
+ File.open("another_neo4j/conf/neo4j-server.properties", "w") { |file| file.puts replace }
58
+ puts "Type 'rake neo4j:start' to start it"
59
+ end
60
+
61
+ desc "Start the Neo4j Server"
62
+ task :start do
63
+ puts "Starting Neo4j..."
64
+ if OS::Underlying.windows?
65
+ if %x[reg query "HKU\\S-1-5-19"].size > 0
66
+ puts %x[neo4j/bin/Neo4j.bat start] #start service
67
+ else
68
+ puts "Starting Neo4j directly, not as a service."
69
+ puts %x[neo4j/bin/Neo4j.bat]
70
+ end
71
+ else
72
+ puts %x[neo4j/bin/neo4j start]
73
+ end
74
+ end
75
+
76
+ desc "Stop the Neo4j Server"
77
+ task :stop do
78
+ puts "Stopping Neo4j..."
79
+ if OS::Underlying.windows?
80
+ if %x[reg query "HKU\\S-1-5-19"].size > 0
81
+ puts %x[neo4j/bin/Neo4j.bat stop] #stop service
82
+ else
83
+ puts "You do not have administrative rights to stop the Neo4j Service"
84
+ end
85
+ else
86
+ puts %x[neo4j/bin/neo4j stop]
87
+ end
88
+ end
89
+
90
+ desc "Restart the Neo4j Server"
91
+ task :restart do
92
+ puts "Restarting Neo4j..."
93
+ if OS::Underlying.windows?
94
+ if %x[reg query "HKU\\S-1-5-19"].size > 0
95
+ puts %x[neo4j/bin/Neo4j.bat restart]
96
+ else
97
+ puts "You do not have administrative rights to restart the Neo4j Service"
98
+ end
99
+ else
100
+ puts %x[neo4j/bin/neo4j restart]
101
+ end
102
+ end
103
+
104
+ desc "Reset the Neo4j Server"
105
+ task :reset do
106
+ # Stop the server
107
+ if OS::Underlying.windows?
108
+ if %x[reg query "HKU\\S-1-5-19"].size > 0
109
+ %x[neo4j/bin/Neo4j.bat stop]
110
+
111
+ # Reset the database
112
+ FileUtils.rm_rf("neo4j/data/graph.db")
113
+ FileUtils.mkdir("neo4j/data/graph.db")
114
+
115
+ # Remove log files
116
+ FileUtils.rm_rf("neo4j/data/log")
117
+ FileUtils.mkdir("neo4j/data/log")
118
+
119
+ puts %x[neo4j/bin/Neo4j.bat start]
120
+ else
121
+ puts "You do not have administrative rights to reset the Neo4j Service"
122
+ end
123
+ else
124
+ %x[neo4j/bin/neo4j stop]
125
+
126
+ # Reset the database
127
+ FileUtils.rm_rf("neo4j/data/graph.db")
128
+ FileUtils.mkdir("neo4j/data/graph.db")
129
+
130
+ # Remove log files
131
+ FileUtils.rm_rf("neo4j/data/log")
132
+ FileUtils.mkdir("neo4j/data/log")
133
+
134
+ # Start the server
135
+ puts %x[neo4j/bin/neo4j start]
136
+ end
137
+ end
138
+
139
+ end
@@ -0,0 +1,33 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ require 'neon/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "neon"
8
+ s.version = Neon::VERSION
9
+ s.required_ruby_version = ">= 1.9.2"
10
+
11
+ s.authors = "Ujjwal Thaakar"
12
+ s.email = 'ujjwalthaakar@gmail.com'
13
+ s.homepage = "http://github.com/ujjwalt/neon"
14
+ s.summary = "Sleek ruby bindings for Neo4J"
15
+ s.description = <<-EOF
16
+ Neon is fast, minimal ruby binding for the Neo4J.
17
+ It provides a simple api to manipulate a Neo4J database instance hosted on a server or running as an embedded instance.
18
+ EOF
19
+
20
+ s.require_path = 'lib'
21
+ s.files = Dir.glob("{bin,lib,config}/**/*") + %w(README.md Gemfile neon.gemspec)
22
+
23
+ # Development dependencies
24
+ s.add_development_dependency "os", "~> 0.9"
25
+ s.add_development_dependency "rake", "~> 10.1"
26
+ s.add_development_dependency "rspec", "~> 2.8"
27
+ s.add_development_dependency "yard", "~> 0.8"
28
+
29
+ s.add_dependency "httparty", "~> 0.12"
30
+ s.add_dependency "json", "~> 1.8"
31
+ s.add_dependency "neo4j-cypher", "~> 1.0"
32
+ s.add_dependency "neography", "~> 1.3"
33
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: neon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ujjwal Thaakar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: os
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: httparty
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.12'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
97
+ - !ruby/object:Gem::Dependency
98
+ name: neo4j-cypher
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: neography
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.3'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.3'
125
+ description: |2
126
+ Neon is fast, minimal ruby binding for the Neo4J.
127
+ It provides a simple api to manipulate a Neo4J database instance hosted on a server or running as an embedded instance.
128
+ email: ujjwalthaakar@gmail.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - Gemfile
134
+ - README.md
135
+ - lib/helpers/argument_helpers.rb
136
+ - lib/helpers/transaction_helpers.rb
137
+ - lib/neon.rb
138
+ - lib/neon/Gemfile
139
+ - lib/neon/node.rb
140
+ - lib/neon/node/embedded.rb
141
+ - lib/neon/node/rest.rb
142
+ - lib/neon/property_container.rb
143
+ - lib/neon/relationship.rb
144
+ - lib/neon/relationship/embedded.rb
145
+ - lib/neon/relationship/rest.rb
146
+ - lib/neon/session.rb
147
+ - lib/neon/session/embedded.rb
148
+ - lib/neon/session/invalid_session.rb
149
+ - lib/neon/session/rest.rb
150
+ - lib/neon/transaction.rb
151
+ - lib/neon/transaction/placebo.rb
152
+ - lib/neon/transaction/rest.rb
153
+ - lib/neon/version.rb
154
+ - lib/tasks.rb
155
+ - neon.gemspec
156
+ homepage: http://github.com/ujjwalt/neon
157
+ licenses: []
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: 1.9.2
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.2.0
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: Sleek ruby bindings for Neo4J
179
+ test_files: []
180
+ has_rdoc: