active-orient 0.5 → 0.6

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -2
  3. data/README.md +78 -35
  4. data/VERSION +1 -1
  5. data/active-orient.gemspec +4 -4
  6. data/bin/active-orient-console +8 -5
  7. data/config/boot.rb +2 -4
  8. data/config/config.yml +1 -1
  9. data/config/connect.yml +2 -2
  10. data/examples/time_graph.md +162 -0
  11. data/gratefuldeadconcerts.md +94 -0
  12. data/lib/active-orient.rb +4 -2
  13. data/lib/base.rb +53 -20
  14. data/lib/base_properties.rb +2 -3
  15. data/lib/class_utils.rb +3 -4
  16. data/lib/database_utils.rb +14 -5
  17. data/lib/init.rb +11 -1
  18. data/lib/model/edge.rb +12 -10
  19. data/lib/model/model.rb +17 -3
  20. data/lib/model/the_class.rb +60 -40
  21. data/lib/model/the_record.rb +63 -51
  22. data/lib/model/vertex.rb +114 -10
  23. data/lib/orient.rb +24 -33
  24. data/lib/orientdb_private.rb +31 -31
  25. data/lib/other.rb +55 -5
  26. data/lib/rest/change.rb +17 -4
  27. data/lib/rest/create.rb +38 -24
  28. data/lib/rest/delete.rb +3 -2
  29. data/lib/rest/operations.rb +37 -27
  30. data/lib/rest/read.rb +2 -2
  31. data/lib/rest/rest.rb +4 -3
  32. data/lib/support.rb +17 -16
  33. data/linkmap.md +75 -0
  34. data/namespace.md +111 -0
  35. data/rails.md +125 -0
  36. data/rails/activeorient.rb +53 -0
  37. data/{examples/time_graph/config → rails}/config.yml +3 -1
  38. data/{examples/time_graph/config → rails}/connect.yml +2 -2
  39. data/usecase_oo.md +3 -1
  40. metadata +21 -38
  41. data/examples/createTime.rb +0 -91
  42. data/examples/time_graph/Gemfile +0 -21
  43. data/examples/time_graph/Guardfile +0 -26
  44. data/examples/time_graph/README.md +0 -129
  45. data/examples/time_graph/bin/active-orient-console +0 -35
  46. data/examples/time_graph/config/boot.rb +0 -119
  47. data/examples/time_graph/config/init_db.rb +0 -59
  48. data/examples/time_graph/createTime.rb +0 -51
  49. data/examples/time_graph/lib/createTime.rb +0 -82
  50. data/examples/time_graph/model/day_of.rb +0 -3
  51. data/examples/time_graph/model/e.rb +0 -6
  52. data/examples/time_graph/model/edge.rb +0 -53
  53. data/examples/time_graph/model/monat.rb +0 -19
  54. data/examples/time_graph/model/stunde.rb +0 -16
  55. data/examples/time_graph/model/tag.rb +0 -29
  56. data/examples/time_graph/model/time_base.rb +0 -6
  57. data/examples/time_graph/model/time_of.rb +0 -4
  58. data/examples/time_graph/model/v.rb +0 -3
  59. data/examples/time_graph/model/vertex.rb +0 -32
  60. data/examples/time_graph/spec/lib/create_time_spec.rb +0 -50
  61. data/examples/time_graph/spec/rest_helper.rb +0 -37
  62. data/examples/time_graph/spec/spec_helper.rb +0 -46
  63. data/usecase.md +0 -104
@@ -0,0 +1,75 @@
1
+ # Joining Tables
2
+
3
+ The most important difference between OrientDB and a Relational Database is that relationships are represented by LINKS instead of JOINs.
4
+
5
+ For this reason, the classic JOIN syntax is not supported. OrientDB uses the "dot (.) notation" to navigate LINKS
6
+ (OrientDB-documation)
7
+
8
+ This is supported by ActiveOrient in a very convient way.
9
+
10
+ ## Playing with Arrays and Linkmaps
11
+
12
+ Linkmaps are the OrientDB equivalent to joined tables
13
+ Formally, they are ordinary arrays.
14
+
15
+ They can be created schemaless
16
+
17
+ ```ruby
18
+ DB.create_class :industry
19
+ DB.create_class :property
20
+ property_record= Property.create con_id: 12346, property: []
21
+ industries = ['Construction','HealthCare','Bevarage']
22
+ industries.each{| industry | property_record.property << Industry.create( label: industry ) }
23
+
24
+ Property.last
25
+ => #<Property:0x00000001d1a938 @metadata={"type"=>"d", (...)},
26
+ @attributes={"con_id"=>12346, "property"=>["#34:0", "#35:0", "#36:0"],
27
+ "created_at"=>"2017-02-01T06:28:17.332 01:00", "updated_at"=>"2017-02-01T06:28:17.344 01:00"}>
28
+ ```
29
+
30
+ Stored data in this array is accessible via
31
+
32
+ ```ruby
33
+ p = Property.last
34
+ p.property.label
35
+ => ["Construction", "HealthCare", "Bevarage"]
36
+ p.property[2].label
37
+ => "Bevarage"
38
+ p.property.label[2]
39
+ => "Bevarage"
40
+ p.property[2].label[2]
41
+ => "v"
42
+
43
+ p.property.remove_at 2
44
+ p.property.label
45
+ => ["Construction", "HealthCare"]
46
+
47
+ p.property[2] = Industry.where(label:'Bevarage').first
48
+ p.property.label
49
+ => ["Construction", "HealthCare", "Bevarage"]
50
+ ```
51
+
52
+ The Elements of the Array can be treated like common ruby Arrays. Manipulations are
53
+ performed in ruby-spac. Simply call
54
+ ```ruby
55
+ p.update
56
+ ```
57
+ to transfer the changes into the database. This approach can be extended to linked records as well
58
+
59
+ ```ruby
60
+ p.property[2].label = 'zu'
61
+ p.property[2].update
62
+ p.property.label
63
+ => ["Construction", "HealthCare", "zu"]
64
+ Industry.last.label
65
+ => "zu"
66
+
67
+
68
+ ```
69
+
70
+
71
+
72
+
73
+ (to be continued)
74
+
75
+
@@ -0,0 +1,111 @@
1
+ ## Namespace Support
2
+
3
+ Consider a project, where different tasks are clearly separated.
4
+
5
+ A common case is, to concentrate any gathering of raw data in a separate module, maybe even in a gem.
6
+
7
+ ActiveOrient enables this by switching the "ActiveOrient::Model.namespace" directive.
8
+
9
+ In out case, the "ib-ruby" gem gets data through an api
10
+ The gem provides the logic to convert the raw-data from the server to ActiveOrient::Model-Objects.
11
+ Its located in the model-directory of the gem.
12
+
13
+ Just by including the gem in the Gemfile and requiring the gem, anything is available in our project.
14
+
15
+ The gem defines the ActiveOrient-Environment as follows:
16
+ ```ruby
17
+ module IB
18
+ module ORD
19
+ include ActiveOrient::Init # namespace support
20
+ mattr_accessor :login
21
+
22
+ # establishes a connection to the Database and returns the Connection-Object (an ActiveOrient::OrientDB. …instance)
23
+ def self.connect
24
+
25
+ c = { :server => 'localhost', :port => 2480, :protocol => 'http',
26
+ :user => 'root', :password => 'root', :database => 'temp' }.merge login.presence || {}
27
+ ActiveOrient.default_server= { user: c[:user], password: c[:password] , server: c[:server], port: c[:port] }
28
+ ActiveOrient.database = c[:database]
29
+ logger = Logger.new '/dev/stdout'
30
+ ActiveOrient::Init.define_namespace { IB }
31
+ project_root = File.expand_path('../..', __FILE__)
32
+
33
+ ActiveOrient::Model.model_dir = "#{project_root}/models"
34
+ ActiveOrient::OrientDB.new preallocate: true # connect via http-rest
35
+
36
+ (...)
37
+ ```
38
+ The gem scans through all database classes present, and allocates only those, where a model-file
39
+ is found in the model-directory.
40
+
41
+ This takes place by requiring 'ib-ruby' in 'config/boot.rb'
42
+
43
+ ```ruby
44
+ 76 #read the configuration and model-files from the ib-ruby gem directotry
45
+ 77 require 'ib/ord'
46
+ 78 IB::ORD.login= ActiveOrient.default_server.merge database: ActiveOrient.database
47
+ 79 require 'ib-ruby' # automatically connects to the database
48
+ 80
49
+ 81 # set the model-file for the time-graph
50
+ 82 module TG
51
+ 83 end
52
+ 84 ActiveOrient::Model.model_dir = "#{project_root}/model"
53
+ 85 ActiveOrient::Init.define_namespace { TG }
54
+ 86 puts "Namespace changed: #{ActiveOrient::Model.namespace}"
55
+ 87 ActiveOrient::OrientDB.new preallocate: true
56
+
57
+ ```
58
+
59
+ After row 80, the namspace is changed to "TG" (TimeGraph). The example provides a gem as well. Just
60
+ »require 'orientdb_time_graph'« and call »TG.connect« to include it properly.
61
+
62
+ The code above shows how to integrate the classes within the structure of the project. The difference is the placement
63
+ of the model-files. With the gem, they are located in the root-directory of the gem. The other approach looks in the model-directory of the project (model/tg).
64
+
65
+ Before we start, we switch to the object-layer, where we want to define the working-classes. Their
66
+ logic is defined in model-files in 'model'. And we want to make shure, that all database-classes are allocated
67
+ to ruby classes.
68
+
69
+ ```ruby
70
+ 97 ActiveOrient::Init.define_namespace :object
71
+ 98 ActiveOrient::Model.keep_models_without_file = true
72
+ 99 ORD = ActiveOrient::OrientDB.new preallocate: true
73
+ ```
74
+
75
+ **note** The preallocation-algorithm trys to load any class. If »ActiveOrient::Model.keep_models_without_file«
76
+ is set to false, classes are allocated only, if a model-file is present. As a consequence, any appropopiate
77
+ model-file is loaded.
78
+
79
+ Any previously allocated class can thus be extended, providing a proper model-file. For example: If we
80
+ allocated a class «Contract« in the namspace »IB«, methods for this class are included from the model-dir specified in the gem *and* in the actual-model-directory ( in this case: model/ib/contract.rb ).
81
+
82
+
83
+ As a result something like this appears:
84
+
85
+ ```
86
+ DB-Class -> Ruby-Object
87
+ V -> V
88
+ E -> E
89
+ contract -> IB::Contract
90
+ bag -> IB::Bag
91
+ forex -> IB::Forex
92
+ future -> IB::Future
93
+ option -> IB::Option
94
+ stock -> IB::Stock
95
+ account -> IB::Account
96
+ bar -> IB::Bar
97
+ contract_detail -> IB::ContractDetail
98
+ day_of -> TG::DAY_OF
99
+ time_of -> TG::TIME_OF
100
+ time_base -> TG::TimeBase
101
+ monat -> TG::Monat
102
+ stunde -> TG::Stunde
103
+ tag -> TG::Tag
104
+
105
+ new_test -> NewTest
106
+
107
+ ```
108
+
109
+ By changing the namespace-scope with 'ActiveOrient::Init.define_namespace' its always possible to
110
+ change properties, include links and edges or to add and remove classes in the Sub-Modules.
111
+
@@ -0,0 +1,125 @@
1
+ # Active Orient and Rails
2
+
3
+ The usage of Orientdb via ActiveOrient in Rails requires just a few steps.
4
+ Based on a Rails 5 installation
5
+
6
+ ```ruby
7
+ rvm install 2.4
8
+ rvm use 2.4
9
+ gem install bundler
10
+ gem install nokogiri
11
+ gem install rails
12
+ rails -v # Rails 5.0.1
13
+
14
+ ```
15
+
16
+ create your working directory and initialize the system
17
+
18
+ ```ruby
19
+ mkdir rails_project; cd rails_project
20
+ rails -OCT .
21
+ ```
22
+ This initializes a Rails-Stack, without active-record, action-cable and the test-suite.
23
+ (We will use rspec later)
24
+
25
+ This can be checked by inspecting «/config/application.rb «
26
+
27
+ ```ruby
28
+ rails s puma
29
+ ```
30
+ should work at this stage.
31
+
32
+ ## Modify the Gemfile
33
+ Inform rails to use orientdb and active-orient
34
+
35
+ ```
36
+ echo " gem 'active-orient' , :path => '/home/your_cloned_active_orient_path/activeorient' " >> Gemfile
37
+ # or
38
+
39
+ echo " gem 'active-orient' , :git => 'https://github.com/topofocus/active-orient.git' " >> Gemfile
40
+ ```
41
+
42
+ After that, copy
43
+
44
+ * __active_orient/rails/activeorient.rb__ to /config/initializers in the rails-project dir
45
+ * __active_orient/rails/connect.yml__ to /config
46
+ * __active_orient/rails/config.yml__ to /config
47
+
48
+ and modify the yml-files accordingly.
49
+
50
+ Run the bundler
51
+
52
+ ```
53
+ bundle install & bundle update
54
+ ```
55
+
56
+ The database should be present in the rails console, and
57
+ ```ruby
58
+ rails c
59
+
60
+ V.count
61
+ V.first
62
+ E.count
63
+ puts ActiveOrient::Model.allocated_classes.map{|x,y| "#{"%15s"% x} -> #{y.to_s}" }.join("\n")
64
+
65
+ ```
66
+ should work.
67
+
68
+ **Notice** The spring-facility is running in the background. Stop the server prior reloading
69
+ the console ( ./bin/spring stop ).
70
+
71
+ The final step is to generate Model-Files. In «/config/config.yml» the «:model_dir»-var points to
72
+ the location of the model-files. The default is 'lib/orient'.
73
+
74
+ Upon startup this directory is scanned for autoloading database-files.
75
+
76
+ After envoking the rails console, the logfile displays sucessfully loaded and missing files, ie.
77
+
78
+ ```
79
+ 14.01.(08:28:45) INFO->ModelClass#RequireModelFile:..:model-file not present: /home/topo/workspace/orient-rails/lib/orient/followed_by.rb
80
+ 14.01.(08:28:45) INFO->ModelClass#RequireModelFile:..:/home/topo/workspace/orient-rails/lib/orient/v.rb sucessfully loaded
81
+ ```
82
+
83
+ ## Model-file Example
84
+
85
+ To query the GratefulDeadConcerts Database, «v.rb» hosts the essential model methods.
86
+ As always, use «def self.{method}« for class methods and simply «def {method}» for methods working on the record level.
87
+
88
+ ```
89
+ 1 class V
90
+ 2 def self.artists **attributes
91
+ 3 names 'artist', **attributes
92
+ 4 end
93
+ 5
94
+ 6 def self.songs **attributes
95
+ 7 names 'song', **attributes
96
+ 8 end
97
+ 9
98
+ 10 def self.types
99
+ 11 oo = OrientSupport::OrientQuery
100
+ 12 this_query = oo.new distinct: [:type, :a ]
101
+ 13 query_database( this_query ).a
102
+ 14 end
103
+ 15 private
104
+ 16 def self.names type, sort: :asc, limit: 20, skip: 0
105
+ 17 puts "in names"
106
+ 18 oo = OrientSupport::OrientQuery
107
+ 19 query_database oo.new( where: {type: type },
108
+ 20 order: { name: sort } ,
109
+ 21 limit: limit ,
110
+ 22 skip: skip )
111
+ 23 end
112
+ 24 end
113
+
114
+ ```
115
+
116
+ Now
117
+
118
+ ```ruby
119
+ V.types
120
+ V.artists limit: 15, skip: 34, sort: :desc
121
+ ```
122
+ queries the database, fetches 15 artists and can be used everywhere.
123
+
124
+
125
+
@@ -0,0 +1,53 @@
1
+ project_root = File.expand_path('../../..', __FILE__)
2
+ config_root = File.expand_path('../..', __FILE__)
3
+ begin
4
+ connect_file = File.expand_path('../../connect.yml', __FILE__)
5
+ config_file = File.expand_path('../../config.yml', __FILE__)
6
+ connectyml = YAML.load_file( connect_file )[:orientdb][:admin] if connect_file.present?
7
+ configyml = YAML.load_file( config_file )[:active_orient] if config_file.present?
8
+ databaseyml = YAML.load_file( connect_file )[:orientdb][:database] if connect_file.present?
9
+ rescue Errno::ENOENT => e
10
+ Rails.logger.error{ "config/connect.yml not present" }
11
+ puts "config/connectyml not present"
12
+ Rails.logger.error{ "Using defaults to connect database-server" }
13
+ puts "Using defaults to connect database-server"
14
+
15
+ end
16
+
17
+ ActiveOrient::Model.model_dir = "#{project_root}/#{ configyml.present? ? configyml[:model_dir] : "model" }"
18
+ ActiveOrient::Model.keep_models_without_file = true
19
+ # lib/init.rb
20
+ ActiveOrient::Init.define_namespace yml: configyml, namespace: @namespace
21
+
22
+
23
+
24
+ Rails.logger.formatter = proc do |severity, datetime, progname, msg|
25
+ "#{datetime.strftime("%d.%m.(%X)")}#{"%5s" % severity}->#{progname}:..:#{msg}\n"
26
+ end
27
+ ActiveOrient::Base.logger = Rails.logger
28
+ ActiveOrient::OrientDB.logger = Rails.logger
29
+
30
+ if connectyml.present? and connectyml[:user].present? and connectyml[:pass].present?
31
+ ActiveOrient.default_server= { user: connectyml[:user], password: connectyml[:pass] ,
32
+ server: 'localhost', port: 2480 }
33
+ ActiveOrient.database = @configDatabase.presence || databaseyml[Rails.env.to_sym]
34
+
35
+ ORD = ActiveOrient::OrientDB.new preallocate: @do_not_preallocate.present? ? false : true
36
+ if RUBY_PLATFORM == 'java'
37
+ DB = ActiveOrient::API.new preallocate: false
38
+ else
39
+ DB = ORD
40
+ end
41
+ # ActiveOrient::Init.vertex_and_edge_class
42
+
43
+ ORD.create_classes 'E', 'V'
44
+ E.ref_name = 'E'
45
+ V.ref_name = 'V'
46
+ else
47
+ logger = Logger.new('/dev/stdout')
48
+ logger.error{ "config/connectyml is misconfigurated" }
49
+ logger.error{ "Database Server is NOT available"}
50
+ end
51
+
52
+
53
+
@@ -4,5 +4,7 @@
4
4
  ## :object => No Prefix
5
5
  ## :active_orient => ActiveOrient::{name}
6
6
  :namespace: :object
7
- :model_dir: 'model'
7
+ ## model_dir: Path to model-files relative to the root of the application
8
+ ## ie. app/model or model
9
+ :model_dir: 'lib/orient'
8
10
 
@@ -4,8 +4,8 @@
4
4
  :port: 2480
5
5
  :logger: stdout # 'file' or 'stdout'
6
6
  :database:
7
- :development: time_production
8
- :production: time_dev
7
+ :development: GratefulDeadConcerts
8
+ :production: hcn_data
9
9
  :test: tempera
10
10
  :admin:
11
11
  :user: hctw
@@ -1,7 +1,7 @@
1
1
  ## Usecase
2
2
  Below some typical features are summarized by example
3
3
 
4
- Initialize ActiveOrient by calling »bin/actibe-orient-console t«.
4
+ Initialize ActiveOrient by calling »bin/active-orient-console t«.
5
5
  This connects to the Test-Database.
6
6
 
7
7
  ```ruby
@@ -57,3 +57,5 @@ Attibutes/properties of the Database-Record can be handled as normal ruby objec
57
57
  ```
58
58
 
59
59
  ## Inherence
60
+
61
+ ( to be continued )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-orient
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hartmut Bischoff
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-01 00:00:00.000000000 Z
11
+ date: 2017-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,30 +42,30 @@ dependencies:
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '4.2'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '4.2'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activemodel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '4.2'
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '4.2'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rest-client
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Persistent ORM for OrientDB, based on ActiveModel
83
+ description: Persistent ORM for OrientDB(V.2.2), based on ActiveModel. Rails 5 compatible
84
84
  email:
85
85
  - topofocus@gmail.com
86
86
  executables: []
@@ -101,36 +101,14 @@ files:
101
101
  - config/connect.yml
102
102
  - create_project
103
103
  - examples/books.rb
104
- - examples/createTime.rb
105
104
  - examples/streets.rb
106
105
  - examples/test_commands.rb
107
106
  - examples/test_commands_2.rb
108
107
  - examples/test_commands_2.rb~
109
108
  - examples/test_commands_3.rb
110
109
  - examples/test_commands_4.rb
111
- - examples/time_graph/Gemfile
112
- - examples/time_graph/Guardfile
113
- - examples/time_graph/README.md
114
- - examples/time_graph/bin/active-orient-console
115
- - examples/time_graph/config/boot.rb
116
- - examples/time_graph/config/config.yml
117
- - examples/time_graph/config/connect.yml
118
- - examples/time_graph/config/init_db.rb
119
- - examples/time_graph/createTime.rb
120
- - examples/time_graph/lib/createTime.rb
121
- - examples/time_graph/model/day_of.rb
122
- - examples/time_graph/model/e.rb
123
- - examples/time_graph/model/edge.rb
124
- - examples/time_graph/model/monat.rb
125
- - examples/time_graph/model/stunde.rb
126
- - examples/time_graph/model/tag.rb
127
- - examples/time_graph/model/time_base.rb
128
- - examples/time_graph/model/time_of.rb
129
- - examples/time_graph/model/v.rb
130
- - examples/time_graph/model/vertex.rb
131
- - examples/time_graph/spec/lib/create_time_spec.rb
132
- - examples/time_graph/spec/rest_helper.rb
133
- - examples/time_graph/spec/spec_helper.rb
110
+ - examples/time_graph.md
111
+ - gratefuldeadconcerts.md
134
112
  - lib/active-orient.rb
135
113
  - lib/base.rb
136
114
  - lib/base_properties.rb
@@ -156,8 +134,13 @@ files:
156
134
  - lib/rest/rest.rb
157
135
  - lib/rest_disabled.rb
158
136
  - lib/support.rb
137
+ - linkmap.md
138
+ - namespace.md
159
139
  - old_lib_functions/two_general_class.rb
160
- - usecase.md
140
+ - rails.md
141
+ - rails/activeorient.rb
142
+ - rails/config.yml
143
+ - rails/connect.yml
161
144
  - usecase_oo.md
162
145
  homepage: https://github.com/topofocus/active-orient
163
146
  licenses:
@@ -179,8 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
162
  version: '0'
180
163
  requirements: []
181
164
  rubyforge_project:
182
- rubygems_version: 2.4.6
165
+ rubygems_version: 2.6.8
183
166
  signing_key:
184
167
  specification_version: 4
185
- summary: Pure ruby client for OrientDB based on ActiveModel
168
+ summary: Pure ruby client for OrientDB(V.2.2) based on ActiveModel
186
169
  test_files: []