neo4j 4.0.0 → 4.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +10 -0
  3. data/Gemfile +6 -16
  4. data/README.md +5 -2
  5. data/bin/neo4j-jars +6 -6
  6. data/lib/neo4j.rb +13 -9
  7. data/lib/neo4j/active_node.rb +9 -9
  8. data/lib/neo4j/active_node/dependent.rb +11 -0
  9. data/lib/neo4j/active_node/dependent/association_methods.rb +28 -0
  10. data/lib/neo4j/active_node/dependent/query_proxy_methods.rb +48 -0
  11. data/lib/neo4j/active_node/has_n.rb +124 -112
  12. data/lib/neo4j/active_node/has_n/association.rb +45 -30
  13. data/lib/neo4j/active_node/id_property.rb +22 -19
  14. data/lib/neo4j/active_node/initialize.rb +2 -4
  15. data/lib/neo4j/active_node/labels.rb +23 -22
  16. data/lib/neo4j/active_node/node_wrapper.rb +5 -8
  17. data/lib/neo4j/active_node/orm_adapter.rb +2 -4
  18. data/lib/neo4j/active_node/persistence.rb +5 -10
  19. data/lib/neo4j/active_node/property.rb +3 -4
  20. data/lib/neo4j/active_node/query.rb +27 -6
  21. data/lib/neo4j/active_node/query/query_proxy.rb +65 -110
  22. data/lib/neo4j/active_node/query/query_proxy_enumerable.rb +67 -0
  23. data/lib/neo4j/active_node/query/query_proxy_find_in_batches.rb +0 -1
  24. data/lib/neo4j/active_node/query/query_proxy_methods.rb +29 -28
  25. data/lib/neo4j/active_node/query_methods.rb +6 -6
  26. data/lib/neo4j/active_node/reflection.rb +3 -2
  27. data/lib/neo4j/active_node/rels.rb +1 -1
  28. data/lib/neo4j/active_node/scope.rb +13 -8
  29. data/lib/neo4j/active_node/validations.rb +5 -6
  30. data/lib/neo4j/active_rel.rb +1 -2
  31. data/lib/neo4j/active_rel/callbacks.rb +3 -3
  32. data/lib/neo4j/active_rel/persistence.rb +9 -7
  33. data/lib/neo4j/active_rel/property.rb +12 -4
  34. data/lib/neo4j/active_rel/query.rb +6 -8
  35. data/lib/neo4j/active_rel/rel_wrapper.rb +0 -2
  36. data/lib/neo4j/active_rel/related_node.rb +4 -5
  37. data/lib/neo4j/active_rel/types.rb +4 -6
  38. data/lib/neo4j/active_rel/validations.rb +0 -1
  39. data/lib/neo4j/config.rb +11 -23
  40. data/lib/neo4j/core/query.rb +1 -1
  41. data/lib/neo4j/migration.rb +17 -18
  42. data/lib/neo4j/paginated.rb +4 -4
  43. data/lib/neo4j/railtie.rb +19 -19
  44. data/lib/neo4j/shared.rb +7 -3
  45. data/lib/neo4j/shared/callbacks.rb +15 -4
  46. data/lib/neo4j/shared/identity.rb +2 -2
  47. data/lib/neo4j/shared/persistence.rb +10 -21
  48. data/lib/neo4j/shared/property.rb +17 -30
  49. data/lib/neo4j/shared/rel_type_converters.rb +1 -3
  50. data/lib/neo4j/shared/type_converters.rb +13 -25
  51. data/lib/neo4j/shared/validations.rb +3 -3
  52. data/lib/neo4j/tasks/migration.rake +7 -7
  53. data/lib/neo4j/type_converters.rb +1 -1
  54. data/lib/neo4j/version.rb +1 -1
  55. data/lib/rails/generators/neo4j/model/model_generator.rb +16 -12
  56. data/lib/rails/generators/neo4j_generator.rb +18 -18
  57. data/neo4j.gemspec +22 -18
  58. metadata +103 -1
@@ -1,16 +1,16 @@
1
1
  require 'neo4j/migration'
2
2
 
3
3
  namespace :neo4j do
4
- desc "Run a script against the database to perform system-wide changes"
4
+ desc 'Run a script against the database to perform system-wide changes'
5
5
  task :migrate, [:task_name, :subtask] => :environment do |_, args|
6
6
  path = Rake.original_dir
7
7
  migration_task = args[:task_name]
8
- task_name_constant = migration_task.split('_').map { |word| word.capitalize }.join('')
8
+ task_name_constant = migration_task.split('_').map(&:capitalize).join('')
9
9
  begin
10
- migration_class = "Neo4j::Migration::#{task_name_constant}".constantize
11
- rescue NameError
12
- load File.join(path, 'db', 'neo4j-migrate', "#{migration_task}.rb")
13
- migration_class = "#{task_name_constant}".constantize
10
+ migration_class = "Neo4j::Migration::#{task_name_constant}".constantize
11
+ rescue NameError
12
+ load File.join(path, 'db', 'neo4j-migrate', "#{migration_task}.rb")
13
+ migration_class = "#{task_name_constant}".constantize
14
14
  end
15
15
  migration = migration_class.new(path)
16
16
 
@@ -21,4 +21,4 @@ namespace :neo4j do
21
21
  migration.migrate
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -4,4 +4,4 @@ module Neo4j
4
4
  # may contain references to this file. We will remove it once that has been dealt with.
5
5
  include Neo4j::Shared::TypeConverters
6
6
  end
7
- end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Neo4j
2
- VERSION = "4.0.0"
2
+ VERSION = '4.1.0'
3
3
  end
@@ -1,21 +1,22 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', '..','neo4j.rb')
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'neo4j.rb')
2
2
 
3
3
  class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
4
- argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
4
+ argument :attributes, type: :array, default: [], banner: 'field:type field:type'
5
5
 
6
6
  check_class_collision
7
7
 
8
- class_option :timestamps, :type => :boolean
9
- class_option :parent, :type => :string, :desc => "The parent class for the generated model"
10
- class_option :indices, :type => :array, :desc => "The properties which should be indexed"
11
- class_option :has_one, :type => :array, :desc => "A list of has_one relationships"
12
- class_option :has_many, :type => :array, :desc => "A list of has_many relationships"
8
+ class_option :timestamps, type: :boolean
9
+ class_option :parent, type: :string, desc: 'The parent class for the generated model'
10
+ class_option :indices, type: :array, desc: 'The properties which should be indexed'
11
+ class_option :has_one, type: :array, desc: 'A list of has_one relationships'
12
+ class_option :has_many, type: :array, desc: 'A list of has_many relationships'
13
13
 
14
14
  def create_model_file
15
- template "model.erb", File.join('app/models', "#{singular_name}.rb")
15
+ template 'model.erb', File.join('app/models', "#{singular_name}.rb")
16
16
  end
17
17
 
18
18
  protected
19
+
19
20
  def migration?
20
21
  false
21
22
  end
@@ -24,12 +25,13 @@ class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
24
25
  options[:timestamps]
25
26
  end
26
27
 
28
+ # rubocop:disable Style/PredicateName
27
29
  def has_many?
28
30
  options[:has_many]
29
31
  end
30
32
 
31
33
  def has_many_statements
32
- txt = ""
34
+ txt = ''
33
35
  options[:has_many].each do |key|
34
36
  txt << has_x('has_many', key)
35
37
  end
@@ -46,12 +48,13 @@ class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
46
48
  end
47
49
 
48
50
  def has_one_statements
49
- txt = ""
51
+ txt = ''
50
52
  options[:has_one].each do |key|
51
53
  txt << has_x('has_one', key)
52
54
  end
53
55
  txt
54
56
  end
57
+ # rubocop:enable Style/PredicateName
55
58
 
56
59
  def indices?
57
60
  options[:indices]
@@ -69,13 +72,14 @@ class Neo4j::Generators::ModelGenerator < Neo4j::Generators::Base #:nodoc:
69
72
  end
70
73
 
71
74
  def timestamp_statements
72
- %q{
75
+ '
73
76
  property :created_at, type: DateTime
74
77
  # property :created_on, type: Date
75
78
 
76
79
  property :updated_at, type: DateTime
77
80
  # property :updated_on, type: Date
78
- }
81
+
82
+ '
79
83
  end
80
84
 
81
85
  hook_for :test_framework
@@ -19,11 +19,11 @@ class Neo4j::Generators::ActiveModel < Rails::Generators::ActiveModel #:nodoc:
19
19
  "#{klass}.all"
20
20
  end
21
21
 
22
- def self.find(klass, params=nil)
22
+ def self.find(klass, params = nil)
23
23
  "#{klass}.find(#{params})"
24
24
  end
25
25
 
26
- def self.build(klass, params=nil)
26
+ def self.build(klass, params = nil)
27
27
  if params
28
28
  "#{klass}.new(#{params})"
29
29
  else
@@ -35,7 +35,7 @@ class Neo4j::Generators::ActiveModel < Rails::Generators::ActiveModel #:nodoc:
35
35
  "#{name}.save"
36
36
  end
37
37
 
38
- def update_attributes(params=nil)
38
+ def update_attributes(params = nil)
39
39
  "#{name}.update_attributes(#{params})"
40
40
  end
41
41
 
@@ -53,22 +53,22 @@ module Rails
53
53
  class GeneratedAttribute #:nodoc:
54
54
  def type_class
55
55
  case type.to_s.downcase
56
- when 'any' then
57
- 'any'
58
- when 'datetime' then
59
- 'DateTime'
60
- when 'date' then
61
- 'Date'
62
- when 'text' then
63
- 'String'
64
- when 'integer', 'number', 'fixnum' then
65
- 'Integer'
66
- when 'float' then
67
- 'Float'
68
- else
69
- 'String'
56
+ when 'any' then
57
+ 'any'
58
+ when 'datetime' then
59
+ 'DateTime'
60
+ when 'date' then
61
+ 'Date'
62
+ when 'text' then
63
+ 'String'
64
+ when 'integer', 'number', 'fixnum' then
65
+ 'Integer'
66
+ when 'float' then
67
+ 'Float'
68
+ else
69
+ 'String'
70
70
  end
71
71
  end
72
72
  end
73
73
  end
74
- end
74
+ end
@@ -1,39 +1,43 @@
1
1
  lib = File.expand_path('../lib/', __FILE__)
2
- $:.unshift lib unless $:.include?(lib)
2
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  require 'neo4j/version'
5
5
 
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "neo4j"
8
+ s.name = 'neo4j'
9
9
  s.version = Neo4j::VERSION
10
- s.required_ruby_version = ">= 1.9.1"
10
+ s.required_ruby_version = '>= 1.9.1'
11
11
 
12
- s.authors = "Andreas Ronge, Brian Underwood, Chris Grigg"
12
+ s.authors = 'Andreas Ronge, Brian Underwood, Chris Grigg'
13
13
  s.email = 'andreas.ronge@gmail.com, brian@brian-underwood.codes, chris@subvertallmedia.com'
14
- s.homepage = "https://github.com/neo4jrb/neo4j/"
14
+ s.homepage = 'https://github.com/neo4jrb/neo4j/'
15
15
  s.rubyforge_project = 'neo4j'
16
- s.summary = "A graph database for Ruby"
16
+ s.summary = 'A graph database for Ruby'
17
17
  s.license = 'MIT'
18
18
  s.description = <<-EOF
19
19
  A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks heavily inspired by ActiveRecord.
20
20
  EOF
21
21
 
22
22
  s.require_path = 'lib'
23
- s.files = Dir.glob("{bin,lib,config}/**/*") + %w(README.md CHANGELOG CONTRIBUTORS Gemfile neo4j.gemspec)
23
+ s.files = Dir.glob('{bin,lib,config}/**/*') + %w(README.md CHANGELOG CONTRIBUTORS Gemfile neo4j.gemspec)
24
24
  s.executables = ['neo4j-jars']
25
25
  s.has_rdoc = true
26
26
  s.extra_rdoc_files = %w( README.md )
27
- s.rdoc_options = ["--quiet", "--title", "Neo4j.rb", "--line-numbers", "--main", "README.rdoc", "--inline-source"]
27
+ s.rdoc_options = ['--quiet', '--title', 'Neo4j.rb', '--line-numbers', '--main', 'README.rdoc', '--inline-source']
28
28
 
29
- s.add_dependency('orm_adapter', "~> 0.5.0")
30
- s.add_dependency("activemodel", "~> 4")
31
- s.add_dependency("activesupport", "~> 4")
32
- s.add_dependency("railties", "~> 4")
33
- s.add_dependency('active_attr', "~> 0.8")
34
- s.add_dependency("neo4j-core", "~> 4.0.0")
35
-
36
- if RUBY_PLATFORM =~ /java/
37
- s.add_dependency("neo4j-community", '~> 2.0')
38
- end
29
+ s.add_dependency('orm_adapter', '~> 0.5.0')
30
+ s.add_dependency('activemodel', '~> 4')
31
+ s.add_dependency('activesupport', '~> 4')
32
+ s.add_dependency('railties', '~> 4')
33
+ s.add_dependency('active_attr', '~> 0.8')
34
+ s.add_dependency('neo4j-core', '~> 4.0.0')
35
+ s.add_dependency('neo4j-community', '~> 2.0') if RUBY_PLATFORM =~ /java/
36
+ s.add_development_dependency('pry')
37
+ s.add_development_dependency('os')
38
+ s.add_development_dependency('rake')
39
+ s.add_development_dependency('yard')
40
+ s.add_development_dependency('guard')
41
+ s.add_development_dependency('guard-rubocop')
42
+ s.add_development_dependency('guard-rspec')
39
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neo4j
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Ronge, Brian Underwood, Chris Grigg
@@ -94,6 +94,104 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 4.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: os
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: guard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: guard-rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: guard-rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
97
195
  description: |
98
196
  A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks heavily inspired by ActiveRecord.
99
197
  email: andreas.ronge@gmail.com, brian@brian-underwood.codes, chris@subvertallmedia.com
@@ -114,6 +212,9 @@ files:
114
212
  - lib/neo4j.rb
115
213
  - lib/neo4j/active_node.rb
116
214
  - lib/neo4j/active_node/callbacks.rb
215
+ - lib/neo4j/active_node/dependent.rb
216
+ - lib/neo4j/active_node/dependent/association_methods.rb
217
+ - lib/neo4j/active_node/dependent/query_proxy_methods.rb
117
218
  - lib/neo4j/active_node/has_n.rb
118
219
  - lib/neo4j/active_node/has_n/association.rb
119
220
  - lib/neo4j/active_node/id_property.rb
@@ -125,6 +226,7 @@ files:
125
226
  - lib/neo4j/active_node/property.rb
126
227
  - lib/neo4j/active_node/query.rb
127
228
  - lib/neo4j/active_node/query/query_proxy.rb
229
+ - lib/neo4j/active_node/query/query_proxy_enumerable.rb
128
230
  - lib/neo4j/active_node/query/query_proxy_find_in_batches.rb
129
231
  - lib/neo4j/active_node/query/query_proxy_methods.rb
130
232
  - lib/neo4j/active_node/query_methods.rb