supernova 0.3.5 → 0.3.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.
- data/VERSION +1 -1
- data/lib/supernova/solr_criteria.rb +17 -5
- data/lib/supernova/solr_indexer.rb +2 -1
- data/spec/supernova/solr_criteria_spec.rb +6 -0
- data/spec/supernova/solr_indexer_spec.rb +1 -0
- data/supernova.gemspec +4 -5
- metadata +31 -35
- data/TODO +0 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.6
|
@@ -90,11 +90,12 @@ class Supernova::SolrCriteria < Supernova::Criteria
|
|
90
90
|
return hash if !hash["type"].respond_to?(:constantize)
|
91
91
|
doc = hash["type"].constantize.new
|
92
92
|
doc.instance_variable_set("@solr_doc", hash)
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
93
|
+
atts = convert_doc_attributes(hash)
|
94
|
+
if doc.instance_variables.include?("@attributes")
|
95
|
+
doc.instance_variable_set("@attributes", atts.except("type"))
|
96
|
+
else
|
97
|
+
atts.each do |key, value|
|
98
|
+
doc.send(:"#{key}=", value) if doc.respond_to?(:"#{key}=")
|
98
99
|
end
|
99
100
|
end
|
100
101
|
doc.instance_variable_set("@readonly", true)
|
@@ -102,6 +103,17 @@ class Supernova::SolrCriteria < Supernova::Criteria
|
|
102
103
|
doc
|
103
104
|
end
|
104
105
|
|
106
|
+
def convert_doc_attributes(hash)
|
107
|
+
hash.inject({}) do |ret, (key, value)|
|
108
|
+
if key == "id"
|
109
|
+
ret["id"] = value.to_s.split("/").last
|
110
|
+
else
|
111
|
+
ret[reverse_lookup_solr_field(key).to_s] = value
|
112
|
+
end
|
113
|
+
ret
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
105
117
|
def set_first_responding_attribute(doc, solr_key, value)
|
106
118
|
[reverse_lookup_solr_field(solr_key), solr_key].each do |key|
|
107
119
|
meth = :"#{key}="
|
@@ -268,6 +268,12 @@ describe Supernova::SolrCriteria do
|
|
268
268
|
end
|
269
269
|
end
|
270
270
|
|
271
|
+
it "updates the attributes hash when defined" do
|
272
|
+
atts = { "type" => "Offer", "some_other" => "Test", "id" => "offers/1", "enabled" => false, "popularity" => 10 }
|
273
|
+
doc = criteria.build_doc(atts)
|
274
|
+
doc.instance_variable_get("@attributes").should == { "popularity" => 10, "enabled" => false, "id" => "1", "some_other" => "Test"}
|
275
|
+
end
|
276
|
+
|
271
277
|
it "returns a Hash when type does not response to " do
|
272
278
|
type = double("type")
|
273
279
|
type.should_receive(:respond_to?).with(:constantize).and_return false
|
@@ -97,6 +97,7 @@ describe Supernova::SolrIndexer do
|
|
97
97
|
[:lat, :float] => "lat AS lat_f",
|
98
98
|
[:text, :boolean] => "text AS text_b",
|
99
99
|
[:loc, :location] => "loc AS loc_p",
|
100
|
+
[:big_int, :double] => "big_int AS big_int_d",
|
100
101
|
[:deleted_at, :date] => %(IF(deleted_at IS NULL, NULL, CONCAT(REPLACE(deleted_at, " ", "T"), "Z")) AS deleted_at_dt),
|
101
102
|
}.each do |(field, type), name|
|
102
103
|
it "maps #{field} with #{type} to #{name}" do
|
data/supernova.gemspec
CHANGED
@@ -5,17 +5,16 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{supernova}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tobias Schwab"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-13}
|
13
13
|
s.description = %q{Unified search scopes}
|
14
14
|
s.email = %q{tobias.schwab@dynport.de}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
|
-
"README.rdoc"
|
18
|
-
"TODO"
|
17
|
+
"README.rdoc"
|
19
18
|
]
|
20
19
|
s.files = [
|
21
20
|
".autotest",
|
@@ -94,7 +93,7 @@ Gem::Specification.new do |s|
|
|
94
93
|
s.homepage = %q{http://github.com/dynport/supernova}
|
95
94
|
s.licenses = ["MIT"]
|
96
95
|
s.require_paths = ["lib"]
|
97
|
-
s.rubygems_version = %q{1.
|
96
|
+
s.rubygems_version = %q{1.7.2}
|
98
97
|
s.summary = %q{Unified search scopes}
|
99
98
|
|
100
99
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: supernova
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 6
|
10
|
+
version: 0.3.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Schwab
|
@@ -15,11 +15,9 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-06-13 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
type: :runtime
|
23
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
22
|
none: false
|
25
23
|
requirements:
|
@@ -31,11 +29,11 @@ dependencies:
|
|
31
29
|
- 0
|
32
30
|
- 3
|
33
31
|
version: 2.0.3
|
34
|
-
name: thinking-sphinx
|
35
32
|
version_requirements: *id001
|
33
|
+
name: thinking-sphinx
|
36
34
|
prerelease: false
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
35
|
type: :runtime
|
36
|
+
- !ruby/object:Gem::Dependency
|
39
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
38
|
none: false
|
41
39
|
requirements:
|
@@ -45,11 +43,11 @@ dependencies:
|
|
45
43
|
segments:
|
46
44
|
- 0
|
47
45
|
version: "0"
|
48
|
-
name: rsolr
|
49
46
|
version_requirements: *id002
|
47
|
+
name: rsolr
|
50
48
|
prerelease: false
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
49
|
type: :runtime
|
50
|
+
- !ruby/object:Gem::Dependency
|
53
51
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
52
|
none: false
|
55
53
|
requirements:
|
@@ -59,11 +57,11 @@ dependencies:
|
|
59
57
|
segments:
|
60
58
|
- 0
|
61
59
|
version: "0"
|
62
|
-
name: will_paginate
|
63
60
|
version_requirements: *id003
|
61
|
+
name: will_paginate
|
64
62
|
prerelease: false
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
63
|
type: :runtime
|
64
|
+
- !ruby/object:Gem::Dependency
|
67
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
66
|
none: false
|
69
67
|
requirements:
|
@@ -73,11 +71,11 @@ dependencies:
|
|
73
71
|
segments:
|
74
72
|
- 0
|
75
73
|
version: "0"
|
76
|
-
name: json
|
77
74
|
version_requirements: *id004
|
75
|
+
name: json
|
78
76
|
prerelease: false
|
77
|
+
type: :runtime
|
79
78
|
- !ruby/object:Gem::Dependency
|
80
|
-
type: :development
|
81
79
|
requirement: &id005 !ruby/object:Gem::Requirement
|
82
80
|
none: false
|
83
81
|
requirements:
|
@@ -87,11 +85,11 @@ dependencies:
|
|
87
85
|
segments:
|
88
86
|
- 0
|
89
87
|
version: "0"
|
90
|
-
name: ruby-debug
|
91
88
|
version_requirements: *id005
|
89
|
+
name: ruby-debug
|
92
90
|
prerelease: false
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
91
|
type: :development
|
92
|
+
- !ruby/object:Gem::Dependency
|
95
93
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
94
|
none: false
|
97
95
|
requirements:
|
@@ -103,11 +101,11 @@ dependencies:
|
|
103
101
|
- 2
|
104
102
|
- 7
|
105
103
|
version: 0.2.7
|
106
|
-
name: mysql2
|
107
104
|
version_requirements: *id006
|
105
|
+
name: mysql2
|
108
106
|
prerelease: false
|
109
|
-
- !ruby/object:Gem::Dependency
|
110
107
|
type: :development
|
108
|
+
- !ruby/object:Gem::Dependency
|
111
109
|
requirement: &id007 !ruby/object:Gem::Requirement
|
112
110
|
none: false
|
113
111
|
requirements:
|
@@ -117,11 +115,11 @@ dependencies:
|
|
117
115
|
segments:
|
118
116
|
- 0
|
119
117
|
version: "0"
|
120
|
-
name: geokit
|
121
118
|
version_requirements: *id007
|
119
|
+
name: geokit
|
122
120
|
prerelease: false
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
121
|
type: :development
|
122
|
+
- !ruby/object:Gem::Dependency
|
125
123
|
requirement: &id008 !ruby/object:Gem::Requirement
|
126
124
|
none: false
|
127
125
|
requirements:
|
@@ -131,11 +129,11 @@ dependencies:
|
|
131
129
|
segments:
|
132
130
|
- 0
|
133
131
|
version: "0"
|
134
|
-
name: autotest
|
135
132
|
version_requirements: *id008
|
133
|
+
name: autotest
|
136
134
|
prerelease: false
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
135
|
type: :development
|
136
|
+
- !ruby/object:Gem::Dependency
|
139
137
|
requirement: &id009 !ruby/object:Gem::Requirement
|
140
138
|
none: false
|
141
139
|
requirements:
|
@@ -145,11 +143,11 @@ dependencies:
|
|
145
143
|
segments:
|
146
144
|
- 0
|
147
145
|
version: "0"
|
148
|
-
name: autotest-growl
|
149
146
|
version_requirements: *id009
|
147
|
+
name: autotest-growl
|
150
148
|
prerelease: false
|
151
|
-
- !ruby/object:Gem::Dependency
|
152
149
|
type: :development
|
150
|
+
- !ruby/object:Gem::Dependency
|
153
151
|
requirement: &id010 !ruby/object:Gem::Requirement
|
154
152
|
none: false
|
155
153
|
requirements:
|
@@ -161,11 +159,11 @@ dependencies:
|
|
161
159
|
- 3
|
162
160
|
- 0
|
163
161
|
version: 2.3.0
|
164
|
-
name: rspec
|
165
162
|
version_requirements: *id010
|
163
|
+
name: rspec
|
166
164
|
prerelease: false
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
165
|
type: :development
|
166
|
+
- !ruby/object:Gem::Dependency
|
169
167
|
requirement: &id011 !ruby/object:Gem::Requirement
|
170
168
|
none: false
|
171
169
|
requirements:
|
@@ -177,11 +175,11 @@ dependencies:
|
|
177
175
|
- 0
|
178
176
|
- 0
|
179
177
|
version: 1.0.0
|
180
|
-
name: bundler
|
181
178
|
version_requirements: *id011
|
179
|
+
name: bundler
|
182
180
|
prerelease: false
|
183
|
-
- !ruby/object:Gem::Dependency
|
184
181
|
type: :development
|
182
|
+
- !ruby/object:Gem::Dependency
|
185
183
|
requirement: &id012 !ruby/object:Gem::Requirement
|
186
184
|
none: false
|
187
185
|
requirements:
|
@@ -193,11 +191,11 @@ dependencies:
|
|
193
191
|
- 6
|
194
192
|
- 0
|
195
193
|
version: 1.6.0
|
196
|
-
name: jeweler
|
197
194
|
version_requirements: *id012
|
195
|
+
name: jeweler
|
198
196
|
prerelease: false
|
199
|
-
- !ruby/object:Gem::Dependency
|
200
197
|
type: :development
|
198
|
+
- !ruby/object:Gem::Dependency
|
201
199
|
requirement: &id013 !ruby/object:Gem::Requirement
|
202
200
|
none: false
|
203
201
|
requirements:
|
@@ -207,9 +205,10 @@ dependencies:
|
|
207
205
|
segments:
|
208
206
|
- 0
|
209
207
|
version: "0"
|
210
|
-
name: rcov
|
211
208
|
version_requirements: *id013
|
209
|
+
name: rcov
|
212
210
|
prerelease: false
|
211
|
+
type: :development
|
213
212
|
description: Unified search scopes
|
214
213
|
email: tobias.schwab@dynport.de
|
215
214
|
executables: []
|
@@ -219,7 +218,6 @@ extensions: []
|
|
219
218
|
extra_rdoc_files:
|
220
219
|
- LICENSE.txt
|
221
220
|
- README.rdoc
|
222
|
-
- TODO
|
223
221
|
files:
|
224
222
|
- .autotest
|
225
223
|
- .document
|
@@ -293,8 +291,6 @@ files:
|
|
293
291
|
- spec/supernova/thinking_sphinx_criteria_spec.rb
|
294
292
|
- spec/supernova_spec.rb
|
295
293
|
- supernova.gemspec
|
296
|
-
- TODO
|
297
|
-
has_rdoc: true
|
298
294
|
homepage: http://github.com/dynport/supernova
|
299
295
|
licenses:
|
300
296
|
- MIT
|
@@ -324,7 +320,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
324
320
|
requirements: []
|
325
321
|
|
326
322
|
rubyforge_project:
|
327
|
-
rubygems_version: 1.
|
323
|
+
rubygems_version: 1.7.2
|
328
324
|
signing_key:
|
329
325
|
specification_version: 3
|
330
326
|
summary: Unified search scopes
|