picky 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/picky/cacher/partial/subtoken.rb +1 -1
- data/lib/picky/configuration/field.rb +5 -2
- data/lib/picky/extensions/hash.rb +3 -1
- data/lib/picky/extensions/object.rb +12 -0
- data/lib/picky/generator.rb +11 -1
- data/lib/picky/index/bundle.rb +10 -8
- data/lib/picky/index/category.rb +5 -15
- data/lib/picky/indexers/base.rb +2 -2
- data/lib/picky/indexers/solr.rb +1 -1
- data/lib/picky/indexes.rb +1 -1
- data/lib/picky/loader.rb +1 -0
- data/lib/picky/query/combination.rb +3 -2
- data/lib/picky/query/qualifiers.rb +1 -1
- data/prototype_project/Gemfile +9 -3
- data/prototype_project/Gemfile.lock +33 -0
- data/prototype_project/Rakefile +11 -1
- data/prototype_project/app/application.rb +4 -7
- data/prototype_project/app/db.yml +3 -0
- data/prototype_project/config.ru +6 -5
- data/prototype_project/unicorn.ru +4 -0
- data/spec/lib/cacher/partial/subtoken_spec.rb +2 -2
- data/spec/lib/configuration/field_spec.rb +49 -0
- data/spec/lib/extensions/object_spec.rb +26 -0
- data/spec/lib/extensions/symbol_spec.rb +1 -1
- data/spec/lib/index/bundle_spec.rb +7 -7
- data/spec/lib/query/qualifiers_spec.rb +1 -1
- metadata +9 -3
@@ -74,7 +74,7 @@ module Cacher
|
|
74
74
|
index.each_key do |token|
|
75
75
|
i += 1
|
76
76
|
if i == 5000
|
77
|
-
|
77
|
+
timed_exclaim "Generating partial tokens for token #{token}. This appears every 5000 tokens."
|
78
78
|
i = 0
|
79
79
|
end
|
80
80
|
generate_for token, index, result
|
@@ -7,7 +7,7 @@ module Configuration
|
|
7
7
|
attr_reader :name, :indexed_name, :virtual
|
8
8
|
attr_accessor :type # convenience
|
9
9
|
def initialize name, options = {}
|
10
|
-
@name = name
|
10
|
+
@name = name.to_sym
|
11
11
|
|
12
12
|
# TODO Dup the options?
|
13
13
|
# TODO add source as option
|
@@ -18,7 +18,7 @@ module Configuration
|
|
18
18
|
@indexed_name = options.delete(:indexed_field) || name # TODO Rename to indexed_as?
|
19
19
|
@virtual = options.delete(:virtual) || false
|
20
20
|
|
21
|
-
qualifiers = options
|
21
|
+
qualifiers = generate_qualifiers_from options
|
22
22
|
Query::Qualifiers.add(name, qualifiers) if qualifiers
|
23
23
|
|
24
24
|
# @remove = options[:remove] || false
|
@@ -26,6 +26,9 @@ module Configuration
|
|
26
26
|
|
27
27
|
@options = options
|
28
28
|
end
|
29
|
+
def generate_qualifiers_from options
|
30
|
+
options[:qualifiers] || options[:qualifier] && [options[:qualifier]] || [name]
|
31
|
+
end
|
29
32
|
def source
|
30
33
|
@source || type.source
|
31
34
|
end
|
@@ -7,7 +7,9 @@ class Hash
|
|
7
7
|
# TODO Still used? If yes, spec!
|
8
8
|
#
|
9
9
|
def dump_to path
|
10
|
-
File.open(path, 'w:binary')
|
10
|
+
File.open(path, 'w:binary') do |out_file|
|
11
|
+
Yajl::Encoder.encode self, out_file
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
15
|
# Use yajl's encoding.
|
data/lib/picky/generator.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
1
3
|
require 'fileutils'
|
2
4
|
|
3
5
|
module Picky
|
@@ -67,7 +69,13 @@ module Picky
|
|
67
69
|
exclaim "Setting up Picky project \"#{name}\"."
|
68
70
|
create_target_directory
|
69
71
|
copy_all_files
|
70
|
-
exclaim "\"#{name}\" is a great project name! Have fun :)"
|
72
|
+
exclaim "\"#{name}\" is a great project name! Have fun :)\n"
|
73
|
+
exclaim "Next steps:"
|
74
|
+
exclaim ""
|
75
|
+
exclaim "cd #{name}"
|
76
|
+
exclaim "cat Gemfile # <- Do you need the mysql gem, for example?"
|
77
|
+
exclaim "bundle install"
|
78
|
+
exclaim "rake # <- shows you where Picky needs input from you."
|
71
79
|
end
|
72
80
|
|
73
81
|
#
|
@@ -154,6 +162,8 @@ module Picky
|
|
154
162
|
exclaim "#{entry} \x1b[31mexists\x1b[m, skipping."
|
155
163
|
end
|
156
164
|
|
165
|
+
# TODO Remove?
|
166
|
+
#
|
157
167
|
def exclaim something
|
158
168
|
puts something
|
159
169
|
end
|
data/lib/picky/index/bundle.rb
CHANGED
@@ -50,7 +50,7 @@ module Index
|
|
50
50
|
# Identifier for this bundle.
|
51
51
|
#
|
52
52
|
def identifier
|
53
|
-
"#{name}
|
53
|
+
"#{name}: #{type.name} #{category.name}"
|
54
54
|
end
|
55
55
|
|
56
56
|
# Point to category.
|
@@ -152,7 +152,7 @@ module Index
|
|
152
152
|
# Generates a cache path.
|
153
153
|
#
|
154
154
|
def cache_path text
|
155
|
-
File.join cache_directory, "#{name}_#{text}.
|
155
|
+
File.join cache_directory, "#{name}_#{text}.json"
|
156
156
|
end
|
157
157
|
def index_cache_path
|
158
158
|
cache_path "#{category.name}_index"
|
@@ -172,18 +172,18 @@ module Index
|
|
172
172
|
load_weights
|
173
173
|
end
|
174
174
|
def load_the index_method_name, path
|
175
|
-
self.send "#{index_method_name}=",
|
175
|
+
self.send "#{index_method_name}=", Yajl::Parser.parse(File.open(path, 'r'), :symbolize_keys => true)
|
176
176
|
end
|
177
177
|
def load_index
|
178
|
-
|
178
|
+
timed_exclaim "Loading the index for #{identifier} from the cache."
|
179
179
|
load_the :index, index_cache_path
|
180
180
|
end
|
181
181
|
def load_similarity
|
182
|
-
|
182
|
+
timed_exclaim "Loading the similarity for #{identifier} from the cache."
|
183
183
|
load_the :similarity, similarity_cache_path
|
184
184
|
end
|
185
185
|
def load_weights
|
186
|
-
|
186
|
+
timed_exclaim "Loading the weights for #{identifier} from the cache."
|
187
187
|
load_the :weights, weights_cache_path
|
188
188
|
end
|
189
189
|
|
@@ -195,13 +195,15 @@ module Index
|
|
195
195
|
# * generates derived indexes
|
196
196
|
# * dumps all the indexes into files
|
197
197
|
#
|
198
|
+
# TODO Rename to Source!!!
|
199
|
+
#
|
198
200
|
def generate_caches_from_db
|
199
201
|
cache_from_db_generation_message
|
200
202
|
load_from_index_file
|
201
203
|
generate_caches_from_memory
|
202
204
|
end
|
203
205
|
def cache_from_db_generation_message
|
204
|
-
|
206
|
+
timed_exclaim "CACHE FROM SOURCE #{identifier}."
|
205
207
|
end
|
206
208
|
# Generates derived indexes from the index and dumps.
|
207
209
|
#
|
@@ -212,7 +214,7 @@ module Index
|
|
212
214
|
generate_derived
|
213
215
|
end
|
214
216
|
def cache_from_memory_generation_message
|
215
|
-
|
217
|
+
timed_exclaim "CACHE FROM MEMORY #{identifier}."
|
216
218
|
end
|
217
219
|
|
218
220
|
# Generates the weights and similarity from the main index.
|
data/lib/picky/index/category.rb
CHANGED
@@ -34,19 +34,19 @@ module Index
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def identifier
|
37
|
-
"#{type.name}
|
37
|
+
"#{type.name} #{name}"
|
38
38
|
end
|
39
39
|
|
40
40
|
# Generates all caches for this category.
|
41
41
|
#
|
42
42
|
def generate_caches
|
43
|
-
timed_exclaim "
|
43
|
+
timed_exclaim "LOAD #{identifier}."
|
44
44
|
generate_caches_from_db
|
45
|
-
timed_exclaim "
|
45
|
+
timed_exclaim "PARTIAL #{identifier}."
|
46
46
|
generate_partial
|
47
|
-
timed_exclaim "
|
47
|
+
timed_exclaim "CACHE #{identifier}."
|
48
48
|
generate_caches_from_memory
|
49
|
-
timed_exclaim "
|
49
|
+
timed_exclaim "DUMP #{identifier}."
|
50
50
|
dump_caches
|
51
51
|
end
|
52
52
|
def generate_caches_from_db
|
@@ -62,16 +62,6 @@ module Index
|
|
62
62
|
exact.dump
|
63
63
|
partial.dump
|
64
64
|
end
|
65
|
-
# TODO move to Kernel?
|
66
|
-
#
|
67
|
-
def timed_exclaim text
|
68
|
-
exclaim "#{Time.now}: #{text}"
|
69
|
-
end
|
70
|
-
# TODO move to Kernel?
|
71
|
-
#
|
72
|
-
def exclaim text
|
73
|
-
puts text
|
74
|
-
end
|
75
65
|
|
76
66
|
# Used for testing.
|
77
67
|
#
|
data/lib/picky/indexers/base.rb
CHANGED
@@ -35,7 +35,7 @@ module Indexers
|
|
35
35
|
@field.source || raise_no_source
|
36
36
|
end
|
37
37
|
def raise_no_source
|
38
|
-
raise NoSourceSpecifiedException.new "No source given for
|
38
|
+
raise NoSourceSpecifiedException.new "No source given for index:#{@type.name}, field:#{@field.name}." # TODO field.identifier
|
39
39
|
end
|
40
40
|
|
41
41
|
# Selects the original id (indexed id) and a column to process. The column data is called "token".
|
@@ -61,7 +61,7 @@ module Indexers
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def indexing_message
|
64
|
-
|
64
|
+
timed_exclaim "INDEX #{@type.name}, #{@field.name}" #:#{@field.indexed_name}." # TODO field.identifier
|
65
65
|
end
|
66
66
|
|
67
67
|
end
|
data/lib/picky/indexers/solr.rb
CHANGED
@@ -21,7 +21,7 @@ module Indexers
|
|
21
21
|
# TODO Rewrite such that it works in batches.
|
22
22
|
#
|
23
23
|
def index
|
24
|
-
|
24
|
+
timed_exclaim "Indexing solr for #{type.name}:#{fields.join(', ')}"
|
25
25
|
statement = "SELECT indexed_id, #{fields.join(',')} FROM #{type.snapshot_table_name}"
|
26
26
|
|
27
27
|
# TODO Rewrite.
|
data/lib/picky/indexes.rb
CHANGED
@@ -16,7 +16,7 @@ module Indexes
|
|
16
16
|
|
17
17
|
# Run in parallel.
|
18
18
|
#
|
19
|
-
|
19
|
+
timed_exclaim "Indexing using #{Cores.max_processors} processors."
|
20
20
|
Cores.forked self.fields, :randomly => true do |field|
|
21
21
|
# Reestablish DB connection.
|
22
22
|
#
|
data/lib/picky/loader.rb
CHANGED
@@ -58,10 +58,11 @@ module Query
|
|
58
58
|
[identifier, *@token.to_result]
|
59
59
|
end
|
60
60
|
|
61
|
-
#
|
61
|
+
# Example:
|
62
|
+
# "exact title:Peter*:peter"
|
62
63
|
#
|
63
64
|
def to_s
|
64
|
-
"#{bundle.name}
|
65
|
+
"#{bundle.name} #{to_result.join(':')}"
|
65
66
|
end
|
66
67
|
|
67
68
|
end
|
data/prototype_project/Gemfile
CHANGED
@@ -9,15 +9,21 @@ gem 'rack-mount', '~> 0.6.9'
|
|
9
9
|
gem 'text', '~> 0.2.0'
|
10
10
|
gem 'yajl-ruby', '~> 0.7.8', :require => 'yajl'
|
11
11
|
|
12
|
-
# Should be optional, but isn't yet.
|
12
|
+
# Should be optional, but isn't yet. Sorry.
|
13
13
|
#
|
14
14
|
gem 'activerecord', '~> 2.3.8', :require => 'active_record'
|
15
15
|
|
16
|
-
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
# Optional. Makes rack faster.
|
17
20
|
#
|
18
21
|
gem 'rack_fast_escape', '2009.06.24'
|
19
22
|
|
20
|
-
#
|
23
|
+
# Optional. Use your preferred web server.
|
21
24
|
#
|
22
25
|
gem 'unicorn'
|
26
|
+
|
27
|
+
# Optional. Use your preferred database adapter.
|
28
|
+
#
|
23
29
|
gem 'mysql'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activerecord (2.3.10)
|
5
|
+
activesupport (= 2.3.10)
|
6
|
+
activesupport (2.3.10)
|
7
|
+
mysql (2.8.1)
|
8
|
+
picky (0.2.3)
|
9
|
+
rack (1.2.1)
|
10
|
+
rack-mount (0.6.13)
|
11
|
+
rack (>= 1.0.0)
|
12
|
+
rack_fast_escape (2009.06.24)
|
13
|
+
url_escape
|
14
|
+
text (0.2.0)
|
15
|
+
unicorn (1.1.4)
|
16
|
+
rack
|
17
|
+
url_escape (2009.06.24)
|
18
|
+
yajl-ruby (0.7.8)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
ruby
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
activerecord (~> 2.3.8)
|
25
|
+
bundler (>= 0.9.26)
|
26
|
+
mysql
|
27
|
+
picky (~> 0.2.0)
|
28
|
+
rack (~> 1.2.1)
|
29
|
+
rack-mount (~> 0.6.9)
|
30
|
+
rack_fast_escape (= 2009.06.24)
|
31
|
+
text (~> 0.2.0)
|
32
|
+
unicorn
|
33
|
+
yajl-ruby (~> 0.7.8)
|
data/prototype_project/Rakefile
CHANGED
@@ -1 +1,11 @@
|
|
1
|
-
require 'picky-tasks'
|
1
|
+
require 'picky-tasks'
|
2
|
+
|
3
|
+
desc "Finds where Picky still needs input from you."
|
4
|
+
task :todo do
|
5
|
+
if system "grep -e 'TO#{}DO.*' -n --color=always -R *"
|
6
|
+
puts "Picky needs a bit of input from you there. Thanks."
|
7
|
+
else
|
8
|
+
puts "Picky seems to be fine (no TO#{}DOs found)."
|
9
|
+
end
|
10
|
+
end
|
11
|
+
task :default => :todo
|
@@ -1,14 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
|
4
|
-
#
|
5
|
-
# Have fun with Picky!
|
6
|
-
#
|
7
|
-
class PickySearch < Application # The App Constant needs to be identical in config.ru.
|
3
|
+
class PickySearch < Application
|
8
4
|
|
9
|
-
#
|
5
|
+
# TODO Adapt the generated example
|
6
|
+
# (a library books finder) to what you need.
|
10
7
|
#
|
11
|
-
#
|
8
|
+
# Check the Wiki http://github.com/floere/picky/wiki for more options.
|
12
9
|
#
|
13
10
|
# Ask me if you have questions or specific requests.
|
14
11
|
#
|
data/prototype_project/config.ru
CHANGED
@@ -16,18 +16,19 @@ require 'picky'
|
|
16
16
|
#
|
17
17
|
Loader.load_application
|
18
18
|
|
19
|
-
# Load the
|
19
|
+
# Load the indexes into the memory.
|
20
20
|
#
|
21
21
|
Indexes.load_from_cache
|
22
22
|
|
23
|
-
# Use Harakiri middleware to kill
|
23
|
+
# Use Harakiri middleware to kill worker child after X requests.
|
24
24
|
#
|
25
|
-
#
|
25
|
+
# Works only with web servers that fork worker children and which
|
26
|
+
# fork new children, like for example Unicorn.
|
26
27
|
#
|
27
|
-
|
28
|
+
Rack::Harakiri.after = 50
|
28
29
|
use Rack::Harakiri
|
29
30
|
|
30
|
-
#
|
31
|
+
# Start accepting requests.
|
31
32
|
#
|
32
33
|
# Note: Needs to be the same constant name as in app/application.rb.
|
33
34
|
#
|
@@ -6,6 +6,10 @@ stdout_path 'log/unicorn.stdout.log'
|
|
6
6
|
timeout 10
|
7
7
|
worker_processes 2
|
8
8
|
|
9
|
+
# After forking, the GC is disabled, because we
|
10
|
+
# kill off the workers after x requests and fork
|
11
|
+
# new ones – so the GC doesn't run.
|
12
|
+
#
|
9
13
|
after_fork do |_, _|
|
10
14
|
GC.disable
|
11
15
|
end
|
@@ -106,7 +106,7 @@ describe Cacher::Partial::Subtoken do
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
it "should be fast" do
|
109
|
-
performance_of { @cacher.generate_from(@index) }.should < 0.
|
109
|
+
performance_of { @cacher.generate_from(@index) }.should < 0.008
|
110
110
|
end
|
111
111
|
end
|
112
112
|
describe "a bigger example with almost identical symbols" do
|
@@ -118,7 +118,7 @@ describe Cacher::Partial::Subtoken do
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
it "should be fast" do
|
121
|
-
performance_of { @cacher.generate_from(@index) }.should < 0.
|
121
|
+
performance_of { @cacher.generate_from(@index) }.should < 0.0045
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
describe "Configuration::Field" do
|
3
|
+
|
4
|
+
context "unit specs" do
|
5
|
+
context "name symbol" do
|
6
|
+
before(:each) do
|
7
|
+
@field = Configuration::Field.new :some_name
|
8
|
+
end
|
9
|
+
describe "generate_qualifiers_from" do
|
10
|
+
context "with qualifiers" do
|
11
|
+
it "uses the qualifiers" do
|
12
|
+
@field.generate_qualifiers_from(:qualifiers => :some_qualifiers).should == :some_qualifiers
|
13
|
+
end
|
14
|
+
end
|
15
|
+
context "without qualifiers" do
|
16
|
+
context "with qualifier" do
|
17
|
+
it "uses the [qualifier]" do
|
18
|
+
@field.generate_qualifiers_from(:qualifier => :some_qualifier).should == [:some_qualifier]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
context "without qualifier" do
|
22
|
+
context "with name" do
|
23
|
+
it "uses the [name]" do
|
24
|
+
@field.generate_qualifiers_from(:nork => :blark).should == [:some_name]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
context "name string" do
|
32
|
+
before(:each) do
|
33
|
+
@field = Configuration::Field.new 'some_name'
|
34
|
+
end
|
35
|
+
describe "generate_qualifiers_from" do
|
36
|
+
context "without qualifiers" do
|
37
|
+
context "without qualifier" do
|
38
|
+
context "with name" do
|
39
|
+
it "uses the [name]" do
|
40
|
+
@field.generate_qualifiers_from(:nork => :blark).should == [:some_name]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Object do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@object = Object.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "exclaim" do
|
10
|
+
it "delegates to puts" do
|
11
|
+
@object.should_receive(:puts).once.with :bla
|
12
|
+
|
13
|
+
@object.exclaim :bla
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "timed_exclaim" do
|
18
|
+
it "should exclaim right" do
|
19
|
+
Time.stub! :now => Time.parse('07-03-1977 12:34:56')
|
20
|
+
@object.should_receive(:exclaim).once.with "12:34:56: bla"
|
21
|
+
|
22
|
+
@object.timed_exclaim 'bla'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -14,7 +14,7 @@ describe Index::Bundle do
|
|
14
14
|
|
15
15
|
describe 'identifier' do
|
16
16
|
it 'should return a specific identifier' do
|
17
|
-
@index.identifier.should == 'some_name:some_type
|
17
|
+
@index.identifier.should == 'some_name: some_type some_category'
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -141,7 +141,7 @@ describe Index::Bundle do
|
|
141
141
|
it 'should raise' do
|
142
142
|
lambda do
|
143
143
|
@index.raise_unless_cache_exists
|
144
|
-
end.should raise_error("weights cache for some_name:some_type
|
144
|
+
end.should raise_error("weights cache for some_name: some_type some_category missing.")
|
145
145
|
end
|
146
146
|
end
|
147
147
|
context 'similarity cache missing' do
|
@@ -153,7 +153,7 @@ describe Index::Bundle do
|
|
153
153
|
it 'should raise' do
|
154
154
|
lambda do
|
155
155
|
@index.raise_unless_cache_exists
|
156
|
-
end.should raise_error("similarity cache for some_name:some_type
|
156
|
+
end.should raise_error("similarity cache for some_name: some_type some_category missing.")
|
157
157
|
end
|
158
158
|
end
|
159
159
|
context 'index cache missing' do
|
@@ -165,7 +165,7 @@ describe Index::Bundle do
|
|
165
165
|
it 'should raise' do
|
166
166
|
lambda do
|
167
167
|
@index.raise_unless_cache_exists
|
168
|
-
end.should raise_error("index cache for some_name:some_type
|
168
|
+
end.should raise_error("index cache for some_name: some_type some_category missing.")
|
169
169
|
end
|
170
170
|
end
|
171
171
|
context 'all ok' do
|
@@ -210,17 +210,17 @@ describe Index::Bundle do
|
|
210
210
|
|
211
211
|
describe 'weights_cache_path' do
|
212
212
|
it 'should return the correct file name' do
|
213
|
-
@index.weights_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_weights.
|
213
|
+
@index.weights_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_weights.json'
|
214
214
|
end
|
215
215
|
end
|
216
216
|
describe 'similarity_cache_path' do
|
217
217
|
it 'should return the correct file name' do
|
218
|
-
@index.similarity_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_similarity.
|
218
|
+
@index.similarity_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_similarity.json'
|
219
219
|
end
|
220
220
|
end
|
221
221
|
describe 'index_cache_path' do
|
222
222
|
it 'should return the correct file name' do
|
223
|
-
@index.index_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_index.
|
223
|
+
@index.index_cache_path.should == 'some/search/root/index/test/some_type/some_name_some_category_index.json'
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Query::Qualifiers do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
Query::Qualifiers.instance << Query::Qualifier.new(:test1, [
|
6
|
+
Query::Qualifiers.instance << Query::Qualifier.new(:test1, ['t1', 'tt1', 'ttt1'])
|
7
7
|
Query::Qualifiers.instance << Query::Qualifier.new(:test2, [:t2, :tt2, :ttt2])
|
8
8
|
Query::Qualifiers.instance << Query::Qualifier.new(:test3, [:t3, :tt3, :ttt3])
|
9
9
|
Query::Qualifiers.instance.prepare
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 4
|
9
|
+
version: 0.2.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Florian Hanke
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-24 00:00:00 +02:00
|
18
18
|
default_executable: picky
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- lib/picky/extensions/array.rb
|
69
69
|
- lib/picky/extensions/hash.rb
|
70
70
|
- lib/picky/extensions/module.rb
|
71
|
+
- lib/picky/extensions/object.rb
|
71
72
|
- lib/picky/extensions/symbol.rb
|
72
73
|
- lib/picky/generator.rb
|
73
74
|
- lib/picky/helpers/cache.rb
|
@@ -134,6 +135,7 @@ files:
|
|
134
135
|
- prototype_project/app/README
|
135
136
|
- prototype_project/config.ru
|
136
137
|
- prototype_project/Gemfile
|
138
|
+
- prototype_project/Gemfile.lock
|
137
139
|
- prototype_project/log/README
|
138
140
|
- prototype_project/Rakefile
|
139
141
|
- prototype_project/script/console
|
@@ -150,11 +152,13 @@ files:
|
|
150
152
|
- spec/lib/cacher/similarity_generator_spec.rb
|
151
153
|
- spec/lib/cacher/weights/logarithmic_spec.rb
|
152
154
|
- spec/lib/cacher/weights_generator_spec.rb
|
155
|
+
- spec/lib/configuration/field_spec.rb
|
153
156
|
- spec/lib/configuration/type_spec.rb
|
154
157
|
- spec/lib/cores_spec.rb
|
155
158
|
- spec/lib/extensions/array_spec.rb
|
156
159
|
- spec/lib/extensions/hash_spec.rb
|
157
160
|
- spec/lib/extensions/module_spec.rb
|
161
|
+
- spec/lib/extensions/object_spec.rb
|
158
162
|
- spec/lib/extensions/symbol_spec.rb
|
159
163
|
- spec/lib/generator_spec.rb
|
160
164
|
- spec/lib/helpers/cache_spec.rb
|
@@ -235,11 +239,13 @@ test_files:
|
|
235
239
|
- spec/lib/cacher/similarity_generator_spec.rb
|
236
240
|
- spec/lib/cacher/weights/logarithmic_spec.rb
|
237
241
|
- spec/lib/cacher/weights_generator_spec.rb
|
242
|
+
- spec/lib/configuration/field_spec.rb
|
238
243
|
- spec/lib/configuration/type_spec.rb
|
239
244
|
- spec/lib/cores_spec.rb
|
240
245
|
- spec/lib/extensions/array_spec.rb
|
241
246
|
- spec/lib/extensions/hash_spec.rb
|
242
247
|
- spec/lib/extensions/module_spec.rb
|
248
|
+
- spec/lib/extensions/object_spec.rb
|
243
249
|
- spec/lib/extensions/symbol_spec.rb
|
244
250
|
- spec/lib/generator_spec.rb
|
245
251
|
- spec/lib/helpers/cache_spec.rb
|