bson_ext 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +33 -8
- data/bson_ext.gemspec +1 -1
- data/ext/cbson/cbson.c +13 -10
- data/ext/cbson/version.h +1 -1
- metadata +9 -4
data/Rakefile
CHANGED
@@ -58,23 +58,48 @@ namespace :test do
|
|
58
58
|
t.verbose = true
|
59
59
|
end
|
60
60
|
|
61
|
-
Rake::TestTask.new(:
|
62
|
-
t.test_files = FileList['test/
|
61
|
+
Rake::TestTask.new(:replica_pair_count) do |t|
|
62
|
+
t.test_files = FileList['test/replica_pairs/count_test.rb']
|
63
63
|
t.verbose = true
|
64
64
|
end
|
65
65
|
|
66
|
-
Rake::TestTask.new(:
|
67
|
-
t.test_files = FileList['test/
|
66
|
+
Rake::TestTask.new(:replica_pair_insert) do |t|
|
67
|
+
t.test_files = FileList['test/replica_pairs/insert_test.rb']
|
68
68
|
t.verbose = true
|
69
69
|
end
|
70
70
|
|
71
|
-
Rake::TestTask.new(:
|
72
|
-
t.test_files = FileList['test/
|
71
|
+
Rake::TestTask.new(:pooled_replica_pair_insert) do |t|
|
72
|
+
t.test_files = FileList['test/replica_pairs/pooled_insert_test.rb']
|
73
73
|
t.verbose = true
|
74
74
|
end
|
75
75
|
|
76
|
-
Rake::TestTask.new(:
|
77
|
-
t.test_files = FileList['test/
|
76
|
+
Rake::TestTask.new(:replica_pair_query) do |t|
|
77
|
+
t.test_files = FileList['test/replica_pairs/query_test.rb']
|
78
|
+
t.verbose = true
|
79
|
+
end
|
80
|
+
|
81
|
+
Rake::TestTask.new(:replica_set_count) do |t|
|
82
|
+
t.test_files = FileList['test/replica_sets/count_test.rb']
|
83
|
+
t.verbose = true
|
84
|
+
end
|
85
|
+
|
86
|
+
Rake::TestTask.new(:replica_set_insert) do |t|
|
87
|
+
t.test_files = FileList['test/replica_sets/insert_test.rb']
|
88
|
+
t.verbose = true
|
89
|
+
end
|
90
|
+
|
91
|
+
Rake::TestTask.new(:pooled_replica_set_insert) do |t|
|
92
|
+
t.test_files = FileList['test/replica_sets/pooled_insert_test.rb']
|
93
|
+
t.verbose = true
|
94
|
+
end
|
95
|
+
|
96
|
+
Rake::TestTask.new(:replica_set_query) do |t|
|
97
|
+
t.test_files = FileList['test/replica_sets/query_test.rb']
|
98
|
+
t.verbose = true
|
99
|
+
end
|
100
|
+
|
101
|
+
Rake::TestTask.new(:replica_set_ack) do |t|
|
102
|
+
t.test_files = FileList['test/replica_sets/replication_ack_test.rb']
|
78
103
|
t.verbose = true
|
79
104
|
end
|
80
105
|
|
data/bson_ext.gemspec
CHANGED
data/ext/cbson/cbson.c
CHANGED
@@ -73,8 +73,8 @@
|
|
73
73
|
#define MAX_HOSTNAME_LENGTH 256
|
74
74
|
|
75
75
|
static VALUE Binary;
|
76
|
-
static VALUE Time;
|
77
76
|
static VALUE ObjectID;
|
77
|
+
static VALUE ObjectId;
|
78
78
|
static VALUE DBRef;
|
79
79
|
static VALUE Code;
|
80
80
|
static VALUE MinKey;
|
@@ -379,7 +379,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
|
|
379
379
|
SAFE_WRITE(buffer, RSTRING_PTR(string_data), length);
|
380
380
|
break;
|
381
381
|
}
|
382
|
-
if (strcmp(cls, "BSON::ObjectID") == 0) {
|
382
|
+
if ((strcmp(cls, "BSON::ObjectId") == 0) || (strcmp(cls, "BSON::ObjectID") == 0)) {
|
383
383
|
VALUE as_array = rb_funcall(value, rb_intern("to_a"), 0);
|
384
384
|
int i;
|
385
385
|
write_name_and_type(buffer, key, 0x07);
|
@@ -561,8 +561,12 @@ static void write_doc(buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_
|
|
561
561
|
|
562
562
|
write_function(key, value, pack_extra(buffer, check_keys));
|
563
563
|
}
|
564
|
-
} else {
|
564
|
+
} else if (strcmp(rb_obj_classname(hash), "Hash") == 0) {
|
565
565
|
rb_hash_foreach(hash, write_function, pack_extra(buffer, check_keys));
|
566
|
+
} else {
|
567
|
+
buffer_free(buffer);
|
568
|
+
char* cls = rb_obj_classname(hash);
|
569
|
+
rb_raise(InvalidDocument, "BSON.serialize takes a Hash but got a %s", cls);
|
566
570
|
}
|
567
571
|
|
568
572
|
// write null byte and fill in length
|
@@ -691,7 +695,7 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
691
695
|
{
|
692
696
|
VALUE str = rb_str_new(buffer + *position, 12);
|
693
697
|
VALUE oid = rb_funcall(str, rb_intern("unpack"), 1, rb_str_new2("C*"));
|
694
|
-
value = rb_class_new_instance(1, &oid,
|
698
|
+
value = rb_class_new_instance(1, &oid, ObjectId);
|
695
699
|
*position += 12;
|
696
700
|
break;
|
697
701
|
}
|
@@ -703,12 +707,9 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
703
707
|
case 9:
|
704
708
|
{
|
705
709
|
long long millis;
|
706
|
-
VALUE seconds, microseconds;
|
707
710
|
memcpy(&millis, buffer + *position, 8);
|
708
|
-
seconds = LL2NUM(millis / 1000);
|
709
|
-
microseconds = INT2NUM((millis % 1000) * 1000);
|
710
711
|
|
711
|
-
value =
|
712
|
+
value = rb_time_new(millis / 1000, (millis % 1000) * 1000);
|
712
713
|
value = rb_funcall(value, rb_intern("utc"), 0);
|
713
714
|
*position += 8;
|
714
715
|
break;
|
@@ -756,7 +757,7 @@ static VALUE get_value(const char* buffer, int* position, int type) {
|
|
756
757
|
|
757
758
|
str = rb_str_new(buffer + *position, 12);
|
758
759
|
oid = rb_funcall(str, rb_intern("unpack"), 1, rb_str_new2("C*"));
|
759
|
-
id = rb_class_new_instance(1, &oid,
|
760
|
+
id = rb_class_new_instance(1, &oid, ObjectId);
|
760
761
|
*position += 12;
|
761
762
|
|
762
763
|
argv[0] = collection;
|
@@ -909,13 +910,14 @@ static VALUE objectid_generate(VALUE self)
|
|
909
910
|
|
910
911
|
void Init_cbson() {
|
911
912
|
VALUE bson, CBson, Digest, ext_version;
|
912
|
-
Time = rb_const_get(rb_cObject, rb_intern("Time"));
|
913
913
|
|
914
914
|
bson = rb_const_get(rb_cObject, rb_intern("BSON"));
|
915
915
|
rb_require("bson/types/binary");
|
916
916
|
Binary = rb_const_get(bson, rb_intern("Binary"));
|
917
917
|
rb_require("bson/types/objectid");
|
918
918
|
ObjectID = rb_const_get(bson, rb_intern("ObjectID"));
|
919
|
+
rb_require("bson/types/object_id");
|
920
|
+
ObjectId = rb_const_get(bson, rb_intern("ObjectId"));
|
919
921
|
rb_require("bson/types/dbref");
|
920
922
|
DBRef = rb_const_get(bson, rb_intern("DBRef"));
|
921
923
|
rb_require("bson/types/code");
|
@@ -942,6 +944,7 @@ void Init_cbson() {
|
|
942
944
|
DigestMD5 = rb_const_get(Digest, rb_intern("MD5"));
|
943
945
|
|
944
946
|
rb_define_method(ObjectID, "generate", objectid_generate, 0);
|
947
|
+
rb_define_method(ObjectId, "generate", objectid_generate, 0);
|
945
948
|
|
946
949
|
rb_define_method(rb_cArray, "fast_pack", fast_pack, 0);
|
947
950
|
}
|
data/ext/cbson/version.h
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bson_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 1
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
9
|
+
- 5
|
10
|
+
version: 1.0.5
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Mike Dirolf
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-08-27 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
@@ -47,23 +48,27 @@ rdoc_options: []
|
|
47
48
|
require_paths:
|
48
49
|
- ext
|
49
50
|
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
50
52
|
requirements:
|
51
53
|
- - ">="
|
52
54
|
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
53
56
|
segments:
|
54
57
|
- 0
|
55
58
|
version: "0"
|
56
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
57
61
|
requirements:
|
58
62
|
- - ">="
|
59
63
|
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
60
65
|
segments:
|
61
66
|
- 0
|
62
67
|
version: "0"
|
63
68
|
requirements: []
|
64
69
|
|
65
70
|
rubyforge_project:
|
66
|
-
rubygems_version: 1.3.
|
71
|
+
rubygems_version: 1.3.7
|
67
72
|
signing_key:
|
68
73
|
specification_version: 3
|
69
74
|
summary: C extensions for Ruby BSON.
|