rod 0.7.2 → 0.7.2.5
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/.travis.yml +1 -1
- data/Rakefile +8 -4
- data/lib/rod/constants.rb +1 -1
- data/lib/rod/database.rb +7 -6
- data/lib/rod/index/hash_index.rb +9 -3
- data/lib/rod/model.rb +2 -2
- data/lib/rod/property/base.rb +14 -0
- data/rod.gemspec +2 -2
- data/spec/property/base.rb +1 -0
- data/spec/property/field.rb +9 -0
- data/spec/property/plural_association.rb +10 -0
- data/spec/property/singular_association.rb +9 -0
- data/tests/migration_model2.rb +1 -1
- metadata +149 -125
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
$:.unshift "lib"
|
2
2
|
require 'rod/constants'
|
3
|
+
require 'fileutils'
|
3
4
|
|
4
5
|
task :default => [:all_tests]
|
5
6
|
|
@@ -27,8 +28,7 @@ task :uninstall do
|
|
27
28
|
sh "sudo gem uninstall #$gem_name"
|
28
29
|
end
|
29
30
|
|
30
|
-
task :all_tests => [:test,:unit_test,:regression_test,:features]
|
31
|
-
end
|
31
|
+
task :all_tests => [:clean,:test,:unit_test,:regression_test,:features]
|
32
32
|
|
33
33
|
desc "Run performence tests"
|
34
34
|
task :perf do
|
@@ -87,9 +87,13 @@ task :wip do
|
|
87
87
|
sh "bundle exec cucumber --tags @wip features/*"
|
88
88
|
end
|
89
89
|
|
90
|
-
desc "Clean
|
90
|
+
desc "Clean tmp directory"
|
91
91
|
task :clean do
|
92
|
-
|
92
|
+
if File.exist?("tmp")
|
93
|
+
sh "rm -rf tmp/*"
|
94
|
+
else
|
95
|
+
FileUtils.mkdir("tmp")
|
96
|
+
end
|
93
97
|
end
|
94
98
|
|
95
99
|
desc "Show changelog from the last release"
|
data/lib/rod/constants.rb
CHANGED
data/lib/rod/database.rb
CHANGED
@@ -93,7 +93,7 @@ module Rod
|
|
93
93
|
| // exted the file
|
94
94
|
|
|
95
95
|
| // increase the pages count by numer of pages allocated at-once
|
96
|
-
| model_p->#{klass.struct_name}_page_count +=
|
96
|
+
| model_p->#{klass.struct_name}_page_count += 1;
|
97
97
|
| {
|
98
98
|
| // open the file for writing
|
99
99
|
| FILE * #{klass.struct_name}_file =
|
@@ -106,8 +106,7 @@ module Rod
|
|
106
106
|
| rb_raise(rodException(),"Could not seek to end file for #{klass.struct_name}.");
|
107
107
|
| }
|
108
108
|
| // write empty data at the end
|
109
|
-
| if(write(model_p->#{klass.struct_name}_lib_file,model_p->empty_data,
|
110
|
-
| page_size() * ALLOCATED_PAGES) == -1){
|
109
|
+
| if(write(model_p->#{klass.struct_name}_lib_file,model_p->empty_data, page_size()) == -1){
|
111
110
|
| rb_raise(rodException(),"Could not write to file for #{klass.struct_name}.");
|
112
111
|
| }
|
113
112
|
|
|
@@ -174,11 +173,11 @@ module Rod
|
|
174
173
|
builder.prefix(klass.typedef_struct)
|
175
174
|
end
|
176
175
|
|
177
|
-
builder.prefix("const ALLOCATED_PAGES = 25;")
|
176
|
+
builder.prefix("const int ALLOCATED_PAGES = 25;")
|
178
177
|
|
179
178
|
str =<<-END
|
180
179
|
|unsigned int page_size(){
|
181
|
-
| return sysconf(_SC_PAGE_SIZE);
|
180
|
+
| return sysconf(_SC_PAGE_SIZE) * ALLOCATED_PAGES;
|
182
181
|
|}
|
183
182
|
END
|
184
183
|
builder.prefix(str.margin)
|
@@ -547,7 +546,7 @@ module Rod
|
|
547
546
|
| strcpy(model_p->path,dir_path);
|
548
547
|
|
|
549
548
|
| // initialize empty data written when extending file
|
550
|
-
| model_p->empty_data = calloc(page_size()
|
549
|
+
| model_p->empty_data = calloc(page_size(),1);
|
551
550
|
|
|
552
551
|
| //create the wrapping object
|
553
552
|
| cClass = rb_define_class("#{model_struct_name(path).camelcase(true)}",
|
@@ -620,6 +619,8 @@ module Rod
|
|
620
619
|
| page_size() * model_p->#{klass.struct_name}_page_count) == -1){
|
621
620
|
| rb_raise(rodException(),"Could not unmap #{klass.struct_name}.");
|
622
621
|
| }
|
622
|
+
| model_p->#{klass.struct_name}_table = NULL;
|
623
|
+
| #{update_pointer(klass) unless special_class?(klass)}
|
623
624
|
| }
|
624
625
|
| if(close(model_p->#{klass.struct_name}_lib_file) == -1){
|
625
626
|
| rb_raise(rodException(),"Could not close model file for #{klass}.");
|
data/lib/rod/index/hash_index.rb
CHANGED
@@ -18,6 +18,7 @@ module Rod
|
|
18
18
|
def initialize(path,klass,options={})
|
19
19
|
@path = path + ".db"
|
20
20
|
@klass = klass
|
21
|
+
@options = options
|
21
22
|
end
|
22
23
|
|
23
24
|
# Stores the index on disk.
|
@@ -79,7 +80,6 @@ module Rod
|
|
79
80
|
_get_first(key)
|
80
81
|
end
|
81
82
|
|
82
|
-
|
83
83
|
protected
|
84
84
|
# Returns an empty BDB based collection proxy.
|
85
85
|
def empty_collection_proxy(key)
|
@@ -93,9 +93,10 @@ module Rod
|
|
93
93
|
# Options:
|
94
94
|
# * +:truncate+ - clears the contents of the index
|
95
95
|
# * +:create+ - creates the index if it doesn't exist
|
96
|
+
# * +:cache_size+ - set the cache size of the index
|
96
97
|
def open(path,options={})
|
97
98
|
raise RodException.new("The index #{@path} is already opened!") if opened?
|
98
|
-
_open(path,options)
|
99
|
+
_open(path,{:cache_size => @options[:cache_size]}.merge(options))
|
99
100
|
@opened = true
|
100
101
|
end
|
101
102
|
|
@@ -318,6 +319,7 @@ module Rod
|
|
318
319
|
| VALUE handleClass;
|
319
320
|
| VALUE handle;
|
320
321
|
| VALUE mod;
|
322
|
+
| unsigned long cache_size = 8 * 1024 * 1024;
|
321
323
|
|
|
322
324
|
| db_pointer = ALLOC(DB);
|
323
325
|
| return_value = db_create(&db_pointer,NULL,0);
|
@@ -337,8 +339,12 @@ module Rod
|
|
337
339
|
| if(rb_hash_aref(options,ID2SYM(rb_intern("truncate"))) == Qtrue){
|
338
340
|
| flags |= DB_TRUNCATE;
|
339
341
|
| }
|
342
|
+
| if(rb_hash_aref(options,ID2SYM(rb_intern("cache_size"))) != Qnil){
|
343
|
+
| cache_size = NUM2ULONG(rb_hash_aref(options,ID2SYM(rb_intern("cache_size"))));
|
344
|
+
| }
|
345
|
+
|
|
346
|
+
| db_pointer->set_cachesize(db_pointer,0,cache_size,0);
|
340
347
|
|
|
341
|
-
| db_pointer->set_cachesize(db_pointer,0,5 * 1024 * 1024,0);
|
342
348
|
| return_value = db_pointer->open(db_pointer,NULL,path,
|
343
349
|
| NULL,DB_HASH,flags,0);
|
344
350
|
| if(return_value != 0){
|
data/lib/rod/model.rb
CHANGED
@@ -447,7 +447,7 @@ module Rod
|
|
447
447
|
backup_path = self.property(property.name).index.path
|
448
448
|
new_path = property.index.path
|
449
449
|
puts "Copying #{backup_path} to #{new_path}" if $ROD_DEBUG
|
450
|
-
FileUtils.cp(backup_path,new_path)
|
450
|
+
FileUtils.cp(backup_path,new_path) if File.exist?(backup_path)
|
451
451
|
end
|
452
452
|
return
|
453
453
|
end
|
@@ -530,7 +530,7 @@ module Rod
|
|
530
530
|
backup_path = self.property(property.name).index.path
|
531
531
|
new_path = property.index.path
|
532
532
|
puts "Copying #{backup_path} to #{new_path}" if $ROD_DEBUG
|
533
|
-
FileUtils.cp(backup_path,new_path)
|
533
|
+
FileUtils.cp(backup_path,new_path) if File.exist?(backup_path)
|
534
534
|
else
|
535
535
|
print "- copying #{property.options[:index]} index for '#{property.name}'... " if $ROD_DEBUG
|
536
536
|
new_index = property.index
|
data/lib/rod/property/base.rb
CHANGED
@@ -116,8 +116,12 @@ module Rod
|
|
116
116
|
|#{result_type} _#{name}(unsigned long object_rod_id){
|
117
117
|
| VALUE klass;
|
118
118
|
| #{struct_name} * pointer;
|
119
|
+
|#ifdef __BYTE_ORDER
|
120
|
+
|# if __BYTE_ORDER == __BIG_ENDIAN
|
119
121
|
| uint64_t as_uint;
|
120
122
|
| uint64_t result_swapped;
|
123
|
+
|# endif
|
124
|
+
|#endif
|
121
125
|
|
|
122
126
|
| if(object_rod_id == 0){
|
123
127
|
| rb_raise(rodException(), "Invalid object rod_id (0)");
|
@@ -125,6 +129,9 @@ module Rod
|
|
125
129
|
| klass = rb_funcall(self,rb_intern("class"),0);
|
126
130
|
| pointer = (#{struct_name} *)
|
127
131
|
| NUM2ULONG(rb_funcall(klass,rb_intern("rod_pointer"),0));
|
132
|
+
| if(pointer == 0){
|
133
|
+
| rb_raise(rodException(), "Invalid model pointer (0). DB is closed.");
|
134
|
+
| }
|
128
135
|
|#ifdef __BYTE_ORDER
|
129
136
|
|# if __BYTE_ORDER == __BIG_ENDIAN
|
130
137
|
| // This code assumes that all values are 64 bit wide. This is not true
|
@@ -151,7 +158,11 @@ module Rod
|
|
151
158
|
|void _#{name}_equals(unsigned long object_rod_id,#{arg_type} value){
|
152
159
|
| VALUE klass;
|
153
160
|
| #{struct_name} * pointer;
|
161
|
+
|#ifdef __BYTE_ORDER
|
162
|
+
|# if __BYTE_ORDER == __BIG_ENDIAN
|
154
163
|
| uint64_t value_swapped;
|
164
|
+
|# endif
|
165
|
+
|#endif
|
155
166
|
|
|
156
167
|
| if(object_rod_id == 0){
|
157
168
|
| rb_raise(rodException(), "Invalid object rod_id (0)");
|
@@ -159,6 +170,9 @@ module Rod
|
|
159
170
|
| klass = rb_funcall(self,rb_intern("class"),0);
|
160
171
|
| pointer = (#{struct_name} *)
|
161
172
|
| NUM2ULONG(rb_funcall(klass,rb_intern("rod_pointer"),0));
|
173
|
+
| if(pointer == 0){
|
174
|
+
| rb_raise(rodException(), "Invalid model pointer (0). DB is closed.");
|
175
|
+
| }
|
162
176
|
|#ifdef __BYTE_ORDER
|
163
177
|
|# if __BYTE_ORDER == __BIG_ENDIAN
|
164
178
|
| // TODO #220 #221
|
data/rod.gemspec
CHANGED
@@ -27,9 +27,9 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_dependency("activemodel", ["~> 3.2.2"])
|
28
28
|
s.add_dependency("bsearch", [">= 1.5.0","< 1.6.0"])
|
29
29
|
|
30
|
-
s.add_development_dependency("mocha", "~> 0.9.8")
|
31
30
|
s.add_development_dependency("cucumber", "~> 1.0.0")
|
32
31
|
s.add_development_dependency("rspec", [">= 2.2.0","< 2.3.0"])
|
33
32
|
s.add_development_dependency("rake", [">= 0.9.0","< 1.0.0"])
|
34
|
-
s.add_development_dependency("minitest", "~>
|
33
|
+
s.add_development_dependency("minitest", "~> 4.0.0")
|
34
|
+
s.add_development_dependency("mocha", "~> 0.9.12")
|
35
35
|
end
|
data/spec/property/base.rb
CHANGED
@@ -64,6 +64,7 @@ describe Rod::Property::Base do
|
|
64
64
|
database.expect :nil?,false
|
65
65
|
database.expect :path,"path"
|
66
66
|
@klass.expect :database,database
|
67
|
+
@klass.expect :database,database
|
67
68
|
@klass.expect :model_path,"model_path"
|
68
69
|
@field.define_finders
|
69
70
|
proc {@klass.find_by_user_name("Name")}.must_be_silent
|
data/spec/property/field.rb
CHANGED
@@ -32,11 +32,20 @@ describe Rod::Property::Field do
|
|
32
32
|
|
33
33
|
it "must define C accessors" do
|
34
34
|
@klass.expect :struct_name, "struct_name"
|
35
|
+
@klass.expect :struct_name, "struct_name"
|
36
|
+
@klass.expect :struct_name, "struct_name"
|
37
|
+
@klass.expect :struct_name, "struct_name"
|
38
|
+
@builder.expect :c,nil,[String]
|
39
|
+
@builder.expect :c,nil,[String]
|
40
|
+
@builder.expect :c,nil,[String]
|
35
41
|
@builder.expect :c,nil,[String]
|
36
42
|
@field.define_c_accessors(@builder)
|
37
43
|
end
|
38
44
|
|
39
45
|
it "must seal C accessors" do
|
46
|
+
@klass.expect :send,nil,[:private,String]
|
47
|
+
@klass.expect :send,nil,[:private,String]
|
48
|
+
@klass.expect :send,nil,[:private,String]
|
40
49
|
@klass.expect :send,nil,[:private,String]
|
41
50
|
@field.seal_c_accessors
|
42
51
|
end
|
@@ -42,17 +42,27 @@ describe Rod::Property::PluralAssociation do
|
|
42
42
|
|
43
43
|
it "must define C accessors" do
|
44
44
|
@klass.expect :struct_name, "struct_name"
|
45
|
+
@klass.expect :struct_name, "struct_name"
|
46
|
+
@klass.expect :struct_name, "struct_name"
|
47
|
+
@klass.expect :struct_name, "struct_name"
|
48
|
+
@builder.expect :c,nil,[String]
|
49
|
+
@builder.expect :c,nil,[String]
|
50
|
+
@builder.expect :c,nil,[String]
|
45
51
|
@builder.expect :c,nil,[String]
|
46
52
|
@association.define_c_accessors(@builder)
|
47
53
|
end
|
48
54
|
|
49
55
|
it "must seal C accessors" do
|
56
|
+
@klass.expect :send,nil,[:private,String]
|
57
|
+
@klass.expect :send,nil,[:private,String]
|
58
|
+
@klass.expect :send,nil,[:private,String]
|
50
59
|
@klass.expect :send,nil,[:private,String]
|
51
60
|
@association.seal_c_accessors
|
52
61
|
end
|
53
62
|
|
54
63
|
it "must define getter" do
|
55
64
|
@klass.expect :send,nil,[:define_method,"users"]
|
65
|
+
@klass.expect :send,nil,[:define_method,"users_count"]
|
56
66
|
@klass.expect :scope_name,"Rod"
|
57
67
|
@klass.expect :database, nil
|
58
68
|
@association.define_getter
|
@@ -42,11 +42,20 @@ describe Rod::Property::SingularAssociation do
|
|
42
42
|
|
43
43
|
it "must define C accessors" do
|
44
44
|
@klass.expect :struct_name, "struct_name"
|
45
|
+
@klass.expect :struct_name, "struct_name"
|
46
|
+
@klass.expect :struct_name, "struct_name"
|
47
|
+
@klass.expect :struct_name, "struct_name"
|
48
|
+
@builder.expect :c,nil,[String]
|
49
|
+
@builder.expect :c,nil,[String]
|
50
|
+
@builder.expect :c,nil,[String]
|
45
51
|
@builder.expect :c,nil,[String]
|
46
52
|
@association.define_c_accessors(@builder)
|
47
53
|
end
|
48
54
|
|
49
55
|
it "must seal C accessors" do
|
56
|
+
@klass.expect :send,nil,[:private,String]
|
57
|
+
@klass.expect :send,nil,[:private,String]
|
58
|
+
@klass.expect :send,nil,[:private,String]
|
50
59
|
@klass.expect :send,nil,[:private,String]
|
51
60
|
@association.seal_c_accessors
|
52
61
|
end
|
data/tests/migration_model2.rb
CHANGED
@@ -18,7 +18,7 @@ class User < Model
|
|
18
18
|
field :city, :string, :index => :segmented
|
19
19
|
|
20
20
|
# changed: index flat -> hash
|
21
|
-
field :street, :string, :index => :hash
|
21
|
+
field :street, :string, :index => :hash, :cache_size => 10 * 1024 * 1024
|
22
22
|
|
23
23
|
# changed: index flat -> nil
|
24
24
|
field :number, :integer
|
metadata
CHANGED
@@ -1,141 +1,198 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rod
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.2.5
|
4
5
|
prerelease:
|
5
|
-
version: 0.7.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Aleksander Pohl
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2014-07-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: RubyInline
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 3.10.0
|
24
22
|
- - <
|
25
|
-
- !ruby/object:Gem::Version
|
23
|
+
- !ruby/object:Gem::Version
|
26
24
|
version: 4.0.0
|
27
25
|
type: :runtime
|
28
|
-
version_requirements: *id001
|
29
|
-
- !ruby/object:Gem::Dependency
|
30
|
-
name: english
|
31
26
|
prerelease: false
|
32
|
-
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
|
-
requirements:
|
35
|
-
- -
|
36
|
-
- !ruby/object:Gem::Version
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.10.0
|
33
|
+
- - <
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 4.0.0
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: english
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
37
43
|
version: 0.5.0
|
38
44
|
- - <
|
39
|
-
- !ruby/object:Gem::Version
|
45
|
+
- !ruby/object:Gem::Version
|
40
46
|
version: 0.6.0
|
41
47
|
type: :runtime
|
42
|
-
version_requirements: *id002
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: activemodel
|
45
48
|
prerelease: false
|
46
|
-
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
50
|
none: false
|
48
|
-
requirements:
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.5.0
|
55
|
+
- - <
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 0.6.0
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: activemodel
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
49
63
|
- - ~>
|
50
|
-
- !ruby/object:Gem::Version
|
64
|
+
- !ruby/object:Gem::Version
|
51
65
|
version: 3.2.2
|
52
66
|
type: :runtime
|
53
|
-
version_requirements: *id003
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: bsearch
|
56
67
|
prerelease: false
|
57
|
-
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 3.2.2
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: bsearch
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
58
77
|
none: false
|
59
|
-
requirements:
|
60
|
-
- -
|
61
|
-
- !ruby/object:Gem::Version
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
62
81
|
version: 1.5.0
|
63
82
|
- - <
|
64
|
-
- !ruby/object:Gem::Version
|
83
|
+
- !ruby/object:Gem::Version
|
65
84
|
version: 1.6.0
|
66
85
|
type: :runtime
|
67
|
-
version_requirements: *id004
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: mocha
|
70
86
|
prerelease: false
|
71
|
-
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
88
|
none: false
|
73
|
-
requirements:
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.5.0
|
93
|
+
- - <
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 1.6.0
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: cucumber
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
74
101
|
- - ~>
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.0.0
|
77
104
|
type: :development
|
78
|
-
version_requirements: *id005
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: cucumber
|
81
105
|
prerelease: false
|
82
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
107
|
none: false
|
84
|
-
requirements:
|
108
|
+
requirements:
|
85
109
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
110
|
+
- !ruby/object:Gem::Version
|
87
111
|
version: 1.0.0
|
88
|
-
|
89
|
-
version_requirements: *id006
|
90
|
-
- !ruby/object:Gem::Dependency
|
112
|
+
- !ruby/object:Gem::Dependency
|
91
113
|
name: rspec
|
92
|
-
|
93
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
94
115
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
98
119
|
version: 2.2.0
|
99
120
|
- - <
|
100
|
-
- !ruby/object:Gem::Version
|
121
|
+
- !ruby/object:Gem::Version
|
101
122
|
version: 2.3.0
|
102
123
|
type: :development
|
103
|
-
version_requirements: *id007
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: rake
|
106
124
|
prerelease: false
|
107
|
-
|
125
|
+
version_requirements: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ! '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 2.2.0
|
131
|
+
- - <
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 2.3.0
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: rake
|
136
|
+
requirement: !ruby/object:Gem::Requirement
|
108
137
|
none: false
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
112
141
|
version: 0.9.0
|
113
142
|
- - <
|
114
|
-
- !ruby/object:Gem::Version
|
143
|
+
- !ruby/object:Gem::Version
|
115
144
|
version: 1.0.0
|
116
145
|
type: :development
|
117
|
-
|
118
|
-
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.9.0
|
153
|
+
- - <
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: 1.0.0
|
156
|
+
- !ruby/object:Gem::Dependency
|
119
157
|
name: minitest
|
158
|
+
requirement: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ~>
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: 4.0.0
|
164
|
+
type: :development
|
120
165
|
prerelease: false
|
121
|
-
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ~>
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: 4.0.0
|
172
|
+
- !ruby/object:Gem::Dependency
|
173
|
+
name: mocha
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
122
175
|
none: false
|
123
|
-
requirements:
|
176
|
+
requirements:
|
124
177
|
- - ~>
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version:
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: 0.9.12
|
127
180
|
type: :development
|
128
|
-
|
129
|
-
|
130
|
-
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
184
|
+
requirements:
|
185
|
+
- - ~>
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.9.12
|
188
|
+
description: Ruby Object Database is designed for large amounts of data, whose structure
|
189
|
+
rarely changes.
|
190
|
+
email:
|
131
191
|
- apohllo@o2.pl
|
132
192
|
executables: []
|
133
|
-
|
134
193
|
extensions: []
|
135
|
-
|
136
194
|
extra_rdoc_files: []
|
137
|
-
|
138
|
-
files:
|
195
|
+
files:
|
139
196
|
- .gitignore
|
140
197
|
- .travis.yml
|
141
198
|
- Gemfile
|
@@ -249,62 +306,29 @@ files:
|
|
249
306
|
- utils/convert_index.rb
|
250
307
|
homepage: http://github.com/apohllo/rod
|
251
308
|
licenses: []
|
252
|
-
|
253
309
|
post_install_message:
|
254
|
-
rdoc_options:
|
310
|
+
rdoc_options:
|
255
311
|
- --main
|
256
312
|
- README.rdoc
|
257
|
-
require_paths:
|
313
|
+
require_paths:
|
258
314
|
- lib
|
259
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
315
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
260
316
|
none: false
|
261
|
-
requirements:
|
262
|
-
- -
|
263
|
-
- !ruby/object:Gem::Version
|
317
|
+
requirements:
|
318
|
+
- - ! '>='
|
319
|
+
- !ruby/object:Gem::Version
|
264
320
|
version: 1.9.2
|
265
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
321
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
322
|
none: false
|
267
|
-
requirements:
|
268
|
-
- -
|
269
|
-
- !ruby/object:Gem::Version
|
270
|
-
version:
|
323
|
+
requirements:
|
324
|
+
- - ! '>='
|
325
|
+
- !ruby/object:Gem::Version
|
326
|
+
version: '0'
|
271
327
|
requirements: []
|
272
|
-
|
273
328
|
rubyforge_project: rod
|
274
|
-
rubygems_version: 1.8.
|
329
|
+
rubygems_version: 1.8.25
|
275
330
|
signing_key:
|
276
331
|
specification_version: 3
|
277
332
|
summary: Ruby Object Database
|
278
|
-
test_files:
|
279
|
-
- features/append.feature
|
280
|
-
- features/backward.feature
|
281
|
-
- features/basic.feature
|
282
|
-
- features/collection.feature
|
283
|
-
- features/collection_proxy.feature
|
284
|
-
- features/flat_indexing.feature
|
285
|
-
- features/hash_indexing.feature
|
286
|
-
- features/inheritence.feature
|
287
|
-
- features/muliple_db.feature
|
288
|
-
- features/persistence.feature
|
289
|
-
- features/portability.feature
|
290
|
-
- features/relationship_indexing.feature
|
291
|
-
- features/relationships.feature
|
292
|
-
- features/segmented_indexing.feature
|
293
|
-
- features/steps/collection_proxy.rb
|
294
|
-
- features/steps/model.rb
|
295
|
-
- features/steps/rod.rb
|
296
|
-
- features/steps/test_helper.rb
|
297
|
-
- features/support/mocha.rb
|
298
|
-
- features/update.feature
|
299
|
-
- spec/berkeley/database.rb
|
300
|
-
- spec/berkeley/environment.rb
|
301
|
-
- spec/berkeley/sequence.rb
|
302
|
-
- spec/berkeley/transaction.rb
|
303
|
-
- spec/collection_proxy.rb
|
304
|
-
- spec/database.rb
|
305
|
-
- spec/model.rb
|
306
|
-
- spec/property/base.rb
|
307
|
-
- spec/property/field.rb
|
308
|
-
- spec/property/plural_association.rb
|
309
|
-
- spec/property/singular_association.rb
|
333
|
+
test_files: []
|
310
334
|
has_rdoc:
|