mebla 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/lib/mebla/mongoid/mebla.rb +4 -3
- data/mebla.gemspec +25 -1
- data/spec/fixtures/models.rb +9 -0
- data/spec/mebla/indexing_spec.rb +16 -0
- data/spec/mebla/searching_spec.rb +19 -0
- data/spec/mebla/synchronization_spec.rb +9 -0
- metadata +114 -26
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
data/lib/mebla/mongoid/mebla.rb
CHANGED
@@ -10,8 +10,7 @@ module Mongoid
|
|
10
10
|
included do
|
11
11
|
# Used to properly represent data types
|
12
12
|
unless defined?(SLINGSHOT_TYPE_MAPPING)
|
13
|
-
SLINGSHOT_TYPE_MAPPING = {
|
14
|
-
'Array' => 'array',
|
13
|
+
SLINGSHOT_TYPE_MAPPING = {
|
15
14
|
'Date' => 'date',
|
16
15
|
'DateTime' => 'date',
|
17
16
|
'Time' => 'date',
|
@@ -106,7 +105,9 @@ module Mongoid
|
|
106
105
|
attrs_mappings = {}
|
107
106
|
|
108
107
|
attrs.each do |attribute|
|
109
|
-
|
108
|
+
unless (field_type = self.fields[attribute.to_s].type.to_s) == "Array" # arrays don't need mappings
|
109
|
+
attrs_mappings[attribute] = {:type => SLINGSHOT_TYPE_MAPPING[field_type] || "string"}
|
110
|
+
end
|
110
111
|
end
|
111
112
|
|
112
113
|
# Generate advanced indeces' mappings
|
data/mebla.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mebla}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Omar Mekky"]
|
@@ -162,6 +162,14 @@ Gem::Specification.new do |s|
|
|
162
162
|
s.add_development_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
163
163
|
s.add_development_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
164
164
|
s.add_development_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
165
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
166
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
167
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
168
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
169
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
170
|
+
s.add_development_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
171
|
+
s.add_development_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
172
|
+
s.add_development_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
165
173
|
s.add_runtime_dependency(%q<slingshot-rb>, ["~> 0.0.6"])
|
166
174
|
s.add_runtime_dependency(%q<mongoid>, ["= 2.0.0.rc.7"])
|
167
175
|
s.add_runtime_dependency(%q<bson>, ["= 1.2.0"])
|
@@ -257,6 +265,14 @@ Gem::Specification.new do |s|
|
|
257
265
|
s.add_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
258
266
|
s.add_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
259
267
|
s.add_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
268
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
269
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
270
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
271
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
272
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
273
|
+
s.add_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
274
|
+
s.add_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
275
|
+
s.add_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
260
276
|
s.add_dependency(%q<slingshot-rb>, ["~> 0.0.6"])
|
261
277
|
s.add_dependency(%q<mongoid>, ["= 2.0.0.rc.7"])
|
262
278
|
s.add_dependency(%q<bson>, ["= 1.2.0"])
|
@@ -353,6 +369,14 @@ Gem::Specification.new do |s|
|
|
353
369
|
s.add_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
354
370
|
s.add_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
355
371
|
s.add_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
372
|
+
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
373
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
374
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
375
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
376
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
377
|
+
s.add_dependency(%q<mongoid-rspec>, ["= 1.4.1"])
|
378
|
+
s.add_dependency(%q<database_cleaner>, ["= 0.6.4"])
|
379
|
+
s.add_dependency(%q<bluecloth>, ["~> 2.1.0"])
|
356
380
|
s.add_dependency(%q<slingshot-rb>, ["~> 0.0.6"])
|
357
381
|
s.add_dependency(%q<mongoid>, ["= 2.0.0.rc.7"])
|
358
382
|
s.add_dependency(%q<bson>, ["= 1.2.0"])
|
data/spec/fixtures/models.rb
CHANGED
@@ -43,6 +43,15 @@ class MongoidOmega < MongoidDelta
|
|
43
43
|
search_in :name
|
44
44
|
end
|
45
45
|
|
46
|
+
class MongoidZeta
|
47
|
+
include Mongoid::Document
|
48
|
+
include Mongoid::Mebla
|
49
|
+
field :name
|
50
|
+
field :an_array, :type => Array
|
51
|
+
|
52
|
+
search_in :name, :an_array
|
53
|
+
end
|
54
|
+
|
46
55
|
class MongoidGamma
|
47
56
|
include Mongoid::Document
|
48
57
|
include Mongoid::Mebla
|
data/spec/mebla/indexing_spec.rb
CHANGED
@@ -30,6 +30,22 @@ describe "Mebla" do
|
|
30
30
|
maps["cost"]["type"].should == "float"
|
31
31
|
end
|
32
32
|
|
33
|
+
describe "array fields" do
|
34
|
+
it "should index arrays" do
|
35
|
+
Mebla.context.drop_index
|
36
|
+
|
37
|
+
zeta = nil
|
38
|
+
|
39
|
+
MongoidZeta.without_indexing do
|
40
|
+
zeta = MongoidZeta.create! :name => "Document with an array", :an_array => [:item, :item2]
|
41
|
+
end
|
42
|
+
|
43
|
+
Mebla.context.index_data
|
44
|
+
|
45
|
+
lambda {Mebla.context.slingshot_index.retrieve(:mongoid_zeta, zeta.id.to_s)}.should_not raise_error
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
33
49
|
describe "for sub-classed documents" do
|
34
50
|
it "should index existing records" do
|
35
51
|
Mebla.context.drop_index
|
@@ -19,6 +19,25 @@ describe "Mebla" do
|
|
19
19
|
results.first.class.should == MongoidAlpha
|
20
20
|
end
|
21
21
|
|
22
|
+
describe "documents with arrays" do
|
23
|
+
before(:each) do
|
24
|
+
Mebla.context.rebuild_index
|
25
|
+
MongoidZeta.create! :name => "Document with array", :an_array => [:item, :item2]
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return arrays correctly" do
|
29
|
+
results = MongoidZeta.search "Document with array"
|
30
|
+
|
31
|
+
results.first.an_array.class.should == Array
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should search within arrays" do
|
35
|
+
results = MongoidZeta.search "item2"
|
36
|
+
|
37
|
+
results.count.should == 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
22
41
|
describe "multiple types" do
|
23
42
|
before(:each) do
|
24
43
|
MongoidBeta.create! :name => "Testing index"
|
@@ -47,6 +47,15 @@ describe "Mebla" do
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
+
describe "array fields documents" do
|
51
|
+
it "should index array fields and retrieve them correctly" do
|
52
|
+
Mebla.context.rebuild_index
|
53
|
+
zdocument = MongoidZeta.create :name => "Document with array", :an_array => [:index, :index2, :index2]
|
54
|
+
|
55
|
+
lambda {Mebla.context.slingshot_index.retrieve(:mongoid_zeta, zdocument.id.to_s)}.should_not raise_error
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
50
59
|
describe "embedded documents" do
|
51
60
|
before(:each) do
|
52
61
|
Mebla.context.rebuild_index
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: mebla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.0.
|
5
|
+
version: 1.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Omar Mekky
|
@@ -916,8 +916,96 @@ dependencies:
|
|
916
916
|
prerelease: false
|
917
917
|
version_requirements: *id082
|
918
918
|
- !ruby/object:Gem::Dependency
|
919
|
-
name:
|
919
|
+
name: rspec
|
920
920
|
requirement: &id083 !ruby/object:Gem::Requirement
|
921
|
+
none: false
|
922
|
+
requirements:
|
923
|
+
- - ~>
|
924
|
+
- !ruby/object:Gem::Version
|
925
|
+
version: 2.3.0
|
926
|
+
type: :development
|
927
|
+
prerelease: false
|
928
|
+
version_requirements: *id083
|
929
|
+
- !ruby/object:Gem::Dependency
|
930
|
+
name: yard
|
931
|
+
requirement: &id084 !ruby/object:Gem::Requirement
|
932
|
+
none: false
|
933
|
+
requirements:
|
934
|
+
- - ~>
|
935
|
+
- !ruby/object:Gem::Version
|
936
|
+
version: 0.6.0
|
937
|
+
type: :development
|
938
|
+
prerelease: false
|
939
|
+
version_requirements: *id084
|
940
|
+
- !ruby/object:Gem::Dependency
|
941
|
+
name: bundler
|
942
|
+
requirement: &id085 !ruby/object:Gem::Requirement
|
943
|
+
none: false
|
944
|
+
requirements:
|
945
|
+
- - ~>
|
946
|
+
- !ruby/object:Gem::Version
|
947
|
+
version: 1.0.0
|
948
|
+
type: :development
|
949
|
+
prerelease: false
|
950
|
+
version_requirements: *id085
|
951
|
+
- !ruby/object:Gem::Dependency
|
952
|
+
name: jeweler
|
953
|
+
requirement: &id086 !ruby/object:Gem::Requirement
|
954
|
+
none: false
|
955
|
+
requirements:
|
956
|
+
- - ~>
|
957
|
+
- !ruby/object:Gem::Version
|
958
|
+
version: 1.5.2
|
959
|
+
type: :development
|
960
|
+
prerelease: false
|
961
|
+
version_requirements: *id086
|
962
|
+
- !ruby/object:Gem::Dependency
|
963
|
+
name: rcov
|
964
|
+
requirement: &id087 !ruby/object:Gem::Requirement
|
965
|
+
none: false
|
966
|
+
requirements:
|
967
|
+
- - ">="
|
968
|
+
- !ruby/object:Gem::Version
|
969
|
+
version: "0"
|
970
|
+
type: :development
|
971
|
+
prerelease: false
|
972
|
+
version_requirements: *id087
|
973
|
+
- !ruby/object:Gem::Dependency
|
974
|
+
name: mongoid-rspec
|
975
|
+
requirement: &id088 !ruby/object:Gem::Requirement
|
976
|
+
none: false
|
977
|
+
requirements:
|
978
|
+
- - "="
|
979
|
+
- !ruby/object:Gem::Version
|
980
|
+
version: 1.4.1
|
981
|
+
type: :development
|
982
|
+
prerelease: false
|
983
|
+
version_requirements: *id088
|
984
|
+
- !ruby/object:Gem::Dependency
|
985
|
+
name: database_cleaner
|
986
|
+
requirement: &id089 !ruby/object:Gem::Requirement
|
987
|
+
none: false
|
988
|
+
requirements:
|
989
|
+
- - "="
|
990
|
+
- !ruby/object:Gem::Version
|
991
|
+
version: 0.6.4
|
992
|
+
type: :development
|
993
|
+
prerelease: false
|
994
|
+
version_requirements: *id089
|
995
|
+
- !ruby/object:Gem::Dependency
|
996
|
+
name: bluecloth
|
997
|
+
requirement: &id090 !ruby/object:Gem::Requirement
|
998
|
+
none: false
|
999
|
+
requirements:
|
1000
|
+
- - ~>
|
1001
|
+
- !ruby/object:Gem::Version
|
1002
|
+
version: 2.1.0
|
1003
|
+
type: :development
|
1004
|
+
prerelease: false
|
1005
|
+
version_requirements: *id090
|
1006
|
+
- !ruby/object:Gem::Dependency
|
1007
|
+
name: slingshot-rb
|
1008
|
+
requirement: &id091 !ruby/object:Gem::Requirement
|
921
1009
|
none: false
|
922
1010
|
requirements:
|
923
1011
|
- - ~>
|
@@ -925,10 +1013,10 @@ dependencies:
|
|
925
1013
|
version: 0.0.6
|
926
1014
|
type: :runtime
|
927
1015
|
prerelease: false
|
928
|
-
version_requirements: *
|
1016
|
+
version_requirements: *id091
|
929
1017
|
- !ruby/object:Gem::Dependency
|
930
1018
|
name: mongoid
|
931
|
-
requirement: &
|
1019
|
+
requirement: &id092 !ruby/object:Gem::Requirement
|
932
1020
|
none: false
|
933
1021
|
requirements:
|
934
1022
|
- - "="
|
@@ -936,10 +1024,10 @@ dependencies:
|
|
936
1024
|
version: 2.0.0.rc.7
|
937
1025
|
type: :runtime
|
938
1026
|
prerelease: false
|
939
|
-
version_requirements: *
|
1027
|
+
version_requirements: *id092
|
940
1028
|
- !ruby/object:Gem::Dependency
|
941
1029
|
name: bson
|
942
|
-
requirement: &
|
1030
|
+
requirement: &id093 !ruby/object:Gem::Requirement
|
943
1031
|
none: false
|
944
1032
|
requirements:
|
945
1033
|
- - "="
|
@@ -947,10 +1035,10 @@ dependencies:
|
|
947
1035
|
version: 1.2.0
|
948
1036
|
type: :runtime
|
949
1037
|
prerelease: false
|
950
|
-
version_requirements: *
|
1038
|
+
version_requirements: *id093
|
951
1039
|
- !ruby/object:Gem::Dependency
|
952
1040
|
name: bson_ext
|
953
|
-
requirement: &
|
1041
|
+
requirement: &id094 !ruby/object:Gem::Requirement
|
954
1042
|
none: false
|
955
1043
|
requirements:
|
956
1044
|
- - "="
|
@@ -958,10 +1046,10 @@ dependencies:
|
|
958
1046
|
version: 1.2.0
|
959
1047
|
type: :runtime
|
960
1048
|
prerelease: false
|
961
|
-
version_requirements: *
|
1049
|
+
version_requirements: *id094
|
962
1050
|
- !ruby/object:Gem::Dependency
|
963
1051
|
name: rspec
|
964
|
-
requirement: &
|
1052
|
+
requirement: &id095 !ruby/object:Gem::Requirement
|
965
1053
|
none: false
|
966
1054
|
requirements:
|
967
1055
|
- - ~>
|
@@ -969,10 +1057,10 @@ dependencies:
|
|
969
1057
|
version: 2.3.0
|
970
1058
|
type: :development
|
971
1059
|
prerelease: false
|
972
|
-
version_requirements: *
|
1060
|
+
version_requirements: *id095
|
973
1061
|
- !ruby/object:Gem::Dependency
|
974
1062
|
name: yard
|
975
|
-
requirement: &
|
1063
|
+
requirement: &id096 !ruby/object:Gem::Requirement
|
976
1064
|
none: false
|
977
1065
|
requirements:
|
978
1066
|
- - ~>
|
@@ -980,10 +1068,10 @@ dependencies:
|
|
980
1068
|
version: 0.6.0
|
981
1069
|
type: :development
|
982
1070
|
prerelease: false
|
983
|
-
version_requirements: *
|
1071
|
+
version_requirements: *id096
|
984
1072
|
- !ruby/object:Gem::Dependency
|
985
1073
|
name: bundler
|
986
|
-
requirement: &
|
1074
|
+
requirement: &id097 !ruby/object:Gem::Requirement
|
987
1075
|
none: false
|
988
1076
|
requirements:
|
989
1077
|
- - ~>
|
@@ -991,10 +1079,10 @@ dependencies:
|
|
991
1079
|
version: 1.0.0
|
992
1080
|
type: :development
|
993
1081
|
prerelease: false
|
994
|
-
version_requirements: *
|
1082
|
+
version_requirements: *id097
|
995
1083
|
- !ruby/object:Gem::Dependency
|
996
1084
|
name: jeweler
|
997
|
-
requirement: &
|
1085
|
+
requirement: &id098 !ruby/object:Gem::Requirement
|
998
1086
|
none: false
|
999
1087
|
requirements:
|
1000
1088
|
- - ~>
|
@@ -1002,10 +1090,10 @@ dependencies:
|
|
1002
1090
|
version: 1.5.2
|
1003
1091
|
type: :development
|
1004
1092
|
prerelease: false
|
1005
|
-
version_requirements: *
|
1093
|
+
version_requirements: *id098
|
1006
1094
|
- !ruby/object:Gem::Dependency
|
1007
1095
|
name: rcov
|
1008
|
-
requirement: &
|
1096
|
+
requirement: &id099 !ruby/object:Gem::Requirement
|
1009
1097
|
none: false
|
1010
1098
|
requirements:
|
1011
1099
|
- - ">="
|
@@ -1013,10 +1101,10 @@ dependencies:
|
|
1013
1101
|
version: "0"
|
1014
1102
|
type: :development
|
1015
1103
|
prerelease: false
|
1016
|
-
version_requirements: *
|
1104
|
+
version_requirements: *id099
|
1017
1105
|
- !ruby/object:Gem::Dependency
|
1018
1106
|
name: mongoid-rspec
|
1019
|
-
requirement: &
|
1107
|
+
requirement: &id100 !ruby/object:Gem::Requirement
|
1020
1108
|
none: false
|
1021
1109
|
requirements:
|
1022
1110
|
- - "="
|
@@ -1024,10 +1112,10 @@ dependencies:
|
|
1024
1112
|
version: 1.4.1
|
1025
1113
|
type: :development
|
1026
1114
|
prerelease: false
|
1027
|
-
version_requirements: *
|
1115
|
+
version_requirements: *id100
|
1028
1116
|
- !ruby/object:Gem::Dependency
|
1029
1117
|
name: database_cleaner
|
1030
|
-
requirement: &
|
1118
|
+
requirement: &id101 !ruby/object:Gem::Requirement
|
1031
1119
|
none: false
|
1032
1120
|
requirements:
|
1033
1121
|
- - "="
|
@@ -1035,10 +1123,10 @@ dependencies:
|
|
1035
1123
|
version: 0.6.4
|
1036
1124
|
type: :development
|
1037
1125
|
prerelease: false
|
1038
|
-
version_requirements: *
|
1126
|
+
version_requirements: *id101
|
1039
1127
|
- !ruby/object:Gem::Dependency
|
1040
1128
|
name: bluecloth
|
1041
|
-
requirement: &
|
1129
|
+
requirement: &id102 !ruby/object:Gem::Requirement
|
1042
1130
|
none: false
|
1043
1131
|
requirements:
|
1044
1132
|
- - ~>
|
@@ -1046,7 +1134,7 @@ dependencies:
|
|
1046
1134
|
version: 2.1.0
|
1047
1135
|
type: :development
|
1048
1136
|
prerelease: false
|
1049
|
-
version_requirements: *
|
1137
|
+
version_requirements: *id102
|
1050
1138
|
description: "\n An elasticsearch wrapper for mongoid odm based on slingshot. Makes integration between ElasticSearch full-text \n search engine and Mongoid documents seemless and simple.\n "
|
1051
1139
|
email: omar.mekky@mashsolvents.com
|
1052
1140
|
executables: []
|
@@ -1109,7 +1197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1109
1197
|
requirements:
|
1110
1198
|
- - ">="
|
1111
1199
|
- !ruby/object:Gem::Version
|
1112
|
-
hash: -
|
1200
|
+
hash: -929217804110582376
|
1113
1201
|
segments:
|
1114
1202
|
- 0
|
1115
1203
|
version: "0"
|