picky 3.6.16 → 4.0.0pre1

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.
Files changed (73) hide show
  1. data/lib/picky/application.rb +1 -1
  2. data/lib/picky/backends/backend.rb +2 -0
  3. data/lib/picky/backends/memory.rb +14 -7
  4. data/lib/picky/backends/{memory → prepared}/text.rb +10 -4
  5. data/lib/picky/backends/redis/directly_manipulable.rb +3 -5
  6. data/lib/picky/backends/redis/list.rb +5 -1
  7. data/lib/picky/backends/sqlite/basic.rb +4 -2
  8. data/lib/picky/bundle.rb +6 -7
  9. data/lib/picky/bundle_indexed.rb +2 -2
  10. data/lib/picky/bundle_realtime.rb +8 -7
  11. data/lib/picky/categories.rb +0 -1
  12. data/lib/picky/categories_indexing.rb +14 -0
  13. data/lib/picky/category.rb +3 -5
  14. data/lib/picky/category_indexed.rb +2 -5
  15. data/lib/picky/category_indexing.rb +28 -16
  16. data/lib/picky/constants.rb +3 -1
  17. data/lib/picky/frontend_adapters/rack.rb +2 -2
  18. data/lib/picky/generators/similarity/phonetic.rb +6 -14
  19. data/lib/picky/generators/strategy.rb +1 -1
  20. data/lib/picky/generators/weights/runtime.rb +2 -2
  21. data/lib/picky/helpers/indexing.rb +20 -0
  22. data/lib/picky/index.rb +7 -10
  23. data/lib/picky/index_indexed.rb +1 -8
  24. data/lib/picky/index_indexing.rb +44 -42
  25. data/lib/picky/indexers/base.rb +5 -6
  26. data/lib/picky/indexers/parallel.rb +35 -32
  27. data/lib/picky/indexers/serial.rb +38 -15
  28. data/lib/picky/indexes_indexed.rb +0 -7
  29. data/lib/picky/indexes_indexing.rb +16 -19
  30. data/lib/picky/loader.rb +6 -4
  31. data/lib/picky/query/allocation.rb +7 -2
  32. data/lib/picky/query/combination.rb +1 -1
  33. data/lib/picky/query/indexes.rb +1 -1
  34. data/lib/picky/query/indexes_check.rb +12 -14
  35. data/lib/picky/query/token.rb +33 -15
  36. data/lib/picky/results/exact_first.rb +53 -0
  37. data/lib/picky/scheduler.rb +43 -0
  38. data/lib/picky/search.rb +0 -2
  39. data/lib/picky/sources/csv.rb +2 -3
  40. data/lib/picky/sources/db.rb +4 -3
  41. data/lib/picky/sources/mongo.rb +1 -1
  42. data/lib/picky/tokenizer.rb +0 -4
  43. data/lib/picky/wrappers/bundle/location.rb +1 -1
  44. data/lib/picky.rb +2 -2
  45. data/lib/tasks/index.rake +13 -14
  46. data/spec/functional/backends/file_spec.rb +2 -4
  47. data/spec/functional/backends/memory_spec.rb +2 -2
  48. data/spec/functional/backends/redis_spec.rb +1 -1
  49. data/spec/functional/exact_first_spec.rb +24 -4
  50. data/spec/functional/realtime_spec.rb +7 -3
  51. data/spec/lib/application_spec.rb +30 -30
  52. data/spec/lib/backends/backend_spec.rb +25 -27
  53. data/spec/lib/backends/{memory → prepared}/text_spec.rb +1 -1
  54. data/spec/lib/category_indexing_spec.rb +1 -1
  55. data/spec/lib/extensions/symbol_spec.rb +1 -1
  56. data/spec/lib/generators/similarity/phonetic_spec.rb +46 -0
  57. data/spec/lib/index_indexed_spec.rb +5 -5
  58. data/spec/lib/index_indexing_spec.rb +13 -12
  59. data/spec/lib/index_spec.rb +8 -8
  60. data/spec/lib/indexers/base_spec.rb +5 -6
  61. data/spec/lib/indexers/parallel_spec.rb +10 -10
  62. data/spec/lib/indexes_indexed_spec.rb +1 -7
  63. data/spec/lib/indexes_indexing_spec.rb +10 -5
  64. data/spec/lib/query/indexes_check_spec.rb +44 -15
  65. data/spec/lib/query/indexes_spec.rb +11 -11
  66. data/spec/lib/query/token_spec.rb +10 -0
  67. data/spec/lib/{indexed/wrappers → results}/exact_first_spec.rb +18 -21
  68. data/spec/lib/scheduler_spec.rb +92 -0
  69. metadata +45 -34
  70. data/lib/picky/cores.rb +0 -127
  71. data/lib/picky/tokenizers/location.rb +0 -53
  72. data/lib/picky/wrappers/category/exact_first.rb +0 -94
  73. data/spec/lib/cores_spec.rb +0 -185
@@ -1,185 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe Picky::Cores do
5
-
6
- describe ".forked" do
7
- context 'without fork' do
8
- before(:each) do
9
- Picky::Cores.stub! :fork? => false
10
- end
11
- it 'should not fork' do
12
- Process.should_receive(:fork).never
13
-
14
- described_class.forked([1,2]) do |element|
15
-
16
- end
17
- end
18
- it 'should yield the two elements' do
19
- result = []
20
-
21
- described_class.forked([1,2]) do |element|
22
- result << element
23
- end
24
-
25
- result.should == [1,2]
26
- end
27
- it 'should yield the two elements' do
28
- result = []
29
-
30
- described_class.forked([1,2], randomly: true) do |element|
31
- result << element
32
- end
33
-
34
- # This test remains like this because I
35
- # like the stupidity of it.
36
- #
37
- if result == [1,2]
38
- result.should == [1,2]
39
- else
40
- result.should == [2,1]
41
- end
42
- end
43
- end
44
- context 'with forking' do
45
- before(:each) do
46
- Picky::Cores.stub! :fork? => true
47
- Process.should_receive(:fork).any_number_of_times.and_yield
48
- end
49
- context "with array" do
50
- context "with block" do
51
- it "runs ok" do
52
- # TODO Problematic test. Should not raise the first time
53
- #
54
- Process.should_receive(:wait).once.and_raise Errno::ECHILD.new
55
-
56
- described_class.forked([1, 2]) do |e|
57
-
58
- end
59
- end
60
- it "yields the elements" do
61
- result = []
62
-
63
- described_class.forked([1, 2]) do |e|
64
- result << e
65
- end
66
-
67
- result.should == [1, 2]
68
- end
69
- it 'should not fork with amount option' do
70
- Process.should_receive(:fork).never
71
-
72
- described_class.forked([1,2], amount: 1) do |element|
73
-
74
- end
75
- end
76
- it 'should not fork with max == 1 option' do
77
- Process.should_receive(:fork).never
78
-
79
- described_class.forked([1,2], max: 1) do |element|
80
-
81
- end
82
- end
83
- end
84
- context "without block" do
85
- it "fails" do
86
- lambda {
87
- described_class.forked [1, 2]
88
- }.should raise_error("Block argument needed when running Cores.forked")
89
- end
90
- end
91
- end
92
- context "with empty array" do
93
- context "with block" do
94
- it "runs ok" do
95
- described_class.forked([]) do
96
-
97
- end
98
- end
99
- end
100
- context "without block" do
101
- it "runs ok" do
102
- described_class.forked []
103
- end
104
- end
105
- end
106
- end
107
- end
108
-
109
- describe 'fork?' do
110
- context 'with forking capabilities' do
111
- before(:all) do
112
- # Process.should_receive(:respond_to?).any_number_of_times.with(:fork).and_return true
113
- end
114
- it 'returns false' do
115
- Picky::Cores.fork?(0).should == false
116
- end
117
- it 'returns false' do
118
- Picky::Cores.fork?(1).should == false
119
- end
120
- it 'returns true' do
121
- Picky::Cores.fork?(2).should == true
122
- end
123
- end
124
- end
125
-
126
- describe 'number_of_cores' do
127
- before(:each) do
128
- @linux = mock(:linux).as_null_object
129
- @darwin = mock(:darwin).as_null_object
130
- described_class.stub! :os_to_core_mapping => {
131
- 'linux' => @linux,
132
- 'darwin' => @darwin
133
- }
134
- end
135
- context 'default' do
136
- before(:each) do
137
- described_class.stub! :platform => 'mswin'
138
- end
139
- it 'should return 1' do
140
- described_class.number_of_cores.should == 1
141
- end
142
- end
143
- context 'osx' do
144
- before(:each) do
145
- described_class.stub! :platform => 'i386-darwin9.8.0'
146
- end
147
- it 'should return whatever darwin returns' do
148
- @darwin.stub! :call => '1234'
149
-
150
- described_class.number_of_cores.should == 1234
151
- end
152
- it 'should call darwin' do
153
- @darwin.should_receive(:call).once
154
-
155
- described_class.number_of_cores
156
- end
157
- it 'should not call linux' do
158
- @linux.should_receive(:call).never
159
-
160
- described_class.number_of_cores
161
- end
162
- end
163
- context 'linux' do
164
- before(:each) do
165
- described_class.stub! :platform => 'x86_64-linux'
166
- end
167
- it 'should return whatever linux returns' do
168
- @linux.stub! :call => '1234'
169
-
170
- described_class.number_of_cores.should == 1234
171
- end
172
- it 'should call linux' do
173
- @linux.should_receive(:call).once
174
-
175
- described_class.number_of_cores
176
- end
177
- it 'should not call darwin' do
178
- @darwin.should_receive(:call).never
179
-
180
- described_class.number_of_cores
181
- end
182
- end
183
- end
184
-
185
- end