thinking-sphinx 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.travis.yml +4 -7
  4. data/HISTORY +27 -0
  5. data/README.textile +38 -218
  6. data/gemfiles/rails_3_2.gemfile +2 -3
  7. data/gemfiles/rails_4_0.gemfile +2 -3
  8. data/gemfiles/rails_4_1.gemfile +2 -3
  9. data/lib/thinking_sphinx.rb +1 -0
  10. data/lib/thinking_sphinx/active_record.rb +1 -0
  11. data/lib/thinking_sphinx/active_record/association_proxy.rb +1 -0
  12. data/lib/thinking_sphinx/active_record/association_proxy/attribute_finder.rb +5 -10
  13. data/lib/thinking_sphinx/active_record/association_proxy/attribute_matcher.rb +38 -0
  14. data/lib/thinking_sphinx/active_record/attribute/type.rb +19 -8
  15. data/lib/thinking_sphinx/active_record/base.rb +3 -1
  16. data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +1 -1
  17. data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +4 -1
  18. data/lib/thinking_sphinx/active_record/index.rb +4 -4
  19. data/lib/thinking_sphinx/active_record/property_query.rb +57 -27
  20. data/lib/thinking_sphinx/active_record/simple_many_query.rb +35 -0
  21. data/lib/thinking_sphinx/capistrano/v3.rb +11 -10
  22. data/lib/thinking_sphinx/configuration.rb +23 -6
  23. data/lib/thinking_sphinx/connection.rb +8 -9
  24. data/lib/thinking_sphinx/errors.rb +7 -2
  25. data/lib/thinking_sphinx/facet.rb +2 -2
  26. data/lib/thinking_sphinx/facet_search.rb +4 -2
  27. data/lib/thinking_sphinx/logger.rb +7 -0
  28. data/lib/thinking_sphinx/masks/group_enumerators_mask.rb +4 -4
  29. data/lib/thinking_sphinx/middlewares/inquirer.rb +2 -2
  30. data/lib/thinking_sphinx/middlewares/sphinxql.rb +6 -2
  31. data/lib/thinking_sphinx/middlewares/stale_id_filter.rb +1 -1
  32. data/lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb +6 -1
  33. data/lib/thinking_sphinx/real_time/property.rb +2 -1
  34. data/lib/thinking_sphinx/real_time/transcriber.rb +7 -3
  35. data/lib/thinking_sphinx/search.rb +14 -4
  36. data/lib/thinking_sphinx/search/context.rb +0 -6
  37. data/lib/thinking_sphinx/test.rb +11 -2
  38. data/lib/thinking_sphinx/wildcard.rb +7 -1
  39. data/spec/acceptance/association_scoping_spec.rb +55 -15
  40. data/spec/acceptance/geosearching_spec.rb +8 -2
  41. data/spec/acceptance/real_time_updates_spec.rb +9 -0
  42. data/spec/acceptance/specifying_sql_spec.rb +31 -17
  43. data/spec/internal/app/indices/car_index.rb +5 -0
  44. data/spec/internal/app/models/car.rb +5 -0
  45. data/spec/internal/app/models/category.rb +2 -1
  46. data/spec/internal/app/models/manufacturer.rb +3 -0
  47. data/spec/internal/db/schema.rb +9 -0
  48. data/spec/thinking_sphinx/active_record/attribute/type_spec.rb +7 -0
  49. data/spec/thinking_sphinx/active_record/base_spec.rb +17 -0
  50. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +2 -1
  51. data/spec/thinking_sphinx/configuration_spec.rb +40 -2
  52. data/spec/thinking_sphinx/errors_spec.rb +21 -0
  53. data/spec/thinking_sphinx/facet_search_spec.rb +6 -6
  54. data/spec/thinking_sphinx/middlewares/inquirer_spec.rb +0 -4
  55. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +25 -0
  56. data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +2 -2
  57. data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +2 -1
  58. data/spec/thinking_sphinx/search_spec.rb +56 -0
  59. data/spec/thinking_sphinx/wildcard_spec.rb +5 -0
  60. data/thinking-sphinx.gemspec +2 -2
  61. metadata +40 -32
  62. data/sketchpad.rb +0 -58
  63. data/spec/internal/log/.gitignore +0 -1
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  module ThinkingSphinx; end
2
3
 
3
4
  require './lib/thinking_sphinx/wildcard'
@@ -37,5 +38,9 @@ describe ThinkingSphinx::Wildcard do
37
38
  it "handles nil queries" do
38
39
  ThinkingSphinx::Wildcard.call(nil).should == ''
39
40
  end
41
+
42
+ it "handles unicode values" do
43
+ ThinkingSphinx::Wildcard.call('älytön').should == '*älytön*'
44
+ end
40
45
  end
41
46
  end
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'thinking-sphinx'
6
- s.version = '3.1.0'
6
+ s.version = '3.1.1'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Pat Allan"]
9
9
  s.email = ["pat@freelancing-gods.com"]
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_runtime_dependency 'joiner', '>= 0.2.0'
27
27
  s.add_runtime_dependency 'middleware', '>= 0.1.0'
28
28
  s.add_runtime_dependency 'innertube', '>= 1.0.2'
29
- s.add_runtime_dependency 'riddle', '>= 1.5.10'
29
+ s.add_runtime_dependency 'riddle', '>= 1.5.11'
30
30
 
31
31
  s.add_development_dependency 'appraisal', '~> 0.5.2'
32
32
  s.add_development_dependency 'combustion', '~> 0.4.0'
metadata CHANGED
@@ -1,153 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thinking-sphinx
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.1.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.1.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: joiner
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: middleware
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.1.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.1.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: innertube
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.0.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.0.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: riddle
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.5.10
89
+ version: 1.5.11
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 1.5.10
96
+ version: 1.5.11
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: appraisal
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.5.2
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.5.2
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: combustion
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.4.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.4.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: database_cleaner
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: 1.2.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.2.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ~>
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
145
  version: 2.13.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ~>
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 2.13.0
153
153
  description: An intelligent layer for ActiveRecord (via Rails and Sinatra) for the
@@ -158,8 +158,8 @@ executables: []
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
- - .gitignore
162
- - .travis.yml
161
+ - ".gitignore"
162
+ - ".travis.yml"
163
163
  - Appraisals
164
164
  - Gemfile
165
165
  - HISTORY
@@ -177,6 +177,7 @@ files:
177
177
  - lib/thinking_sphinx/active_record/association.rb
178
178
  - lib/thinking_sphinx/active_record/association_proxy.rb
179
179
  - lib/thinking_sphinx/active_record/association_proxy/attribute_finder.rb
180
+ - lib/thinking_sphinx/active_record/association_proxy/attribute_matcher.rb
180
181
  - lib/thinking_sphinx/active_record/attribute.rb
181
182
  - lib/thinking_sphinx/active_record/attribute/sphinx_presenter.rb
182
183
  - lib/thinking_sphinx/active_record/attribute/type.rb
@@ -200,6 +201,7 @@ files:
200
201
  - lib/thinking_sphinx/active_record/property.rb
201
202
  - lib/thinking_sphinx/active_record/property_query.rb
202
203
  - lib/thinking_sphinx/active_record/property_sql_presenter.rb
204
+ - lib/thinking_sphinx/active_record/simple_many_query.rb
203
205
  - lib/thinking_sphinx/active_record/sql_builder.rb
204
206
  - lib/thinking_sphinx/active_record/sql_builder/clause_builder.rb
205
207
  - lib/thinking_sphinx/active_record/sql_builder/query.rb
@@ -241,6 +243,7 @@ files:
241
243
  - lib/thinking_sphinx/frameworks/rails.rb
242
244
  - lib/thinking_sphinx/index.rb
243
245
  - lib/thinking_sphinx/index_set.rb
246
+ - lib/thinking_sphinx/logger.rb
244
247
  - lib/thinking_sphinx/masks.rb
245
248
  - lib/thinking_sphinx/masks/group_enumerators_mask.rb
246
249
  - lib/thinking_sphinx/masks/pagination_mask.rb
@@ -290,7 +293,6 @@ files:
290
293
  - lib/thinking_sphinx/test.rb
291
294
  - lib/thinking_sphinx/utf8.rb
292
295
  - lib/thinking_sphinx/wildcard.rb
293
- - sketchpad.rb
294
296
  - spec/acceptance/association_scoping_spec.rb
295
297
  - spec/acceptance/attribute_access_spec.rb
296
298
  - spec/acceptance/attribute_updates_spec.rb
@@ -303,6 +305,7 @@ files:
303
305
  - spec/acceptance/index_options_spec.rb
304
306
  - spec/acceptance/indexing_spec.rb
305
307
  - spec/acceptance/paginating_search_results_spec.rb
308
+ - spec/acceptance/real_time_updates_spec.rb
306
309
  - spec/acceptance/remove_deleted_records_spec.rb
307
310
  - spec/acceptance/search_counts_spec.rb
308
311
  - spec/acceptance/search_for_just_ids_spec.rb
@@ -325,6 +328,7 @@ files:
325
328
  - spec/internal/app/indices/animal_index.rb
326
329
  - spec/internal/app/indices/article_index.rb
327
330
  - spec/internal/app/indices/book_index.rb
331
+ - spec/internal/app/indices/car_index.rb
328
332
  - spec/internal/app/indices/city_index.rb
329
333
  - spec/internal/app/indices/product_index.rb
330
334
  - spec/internal/app/indices/tee_index.rb
@@ -334,6 +338,7 @@ files:
334
338
  - spec/internal/app/models/article.rb
335
339
  - spec/internal/app/models/bird.rb
336
340
  - spec/internal/app/models/book.rb
341
+ - spec/internal/app/models/car.rb
337
342
  - spec/internal/app/models/categorisation.rb
338
343
  - spec/internal/app/models/category.rb
339
344
  - spec/internal/app/models/city.rb
@@ -343,6 +348,7 @@ files:
343
348
  - spec/internal/app/models/genre.rb
344
349
  - spec/internal/app/models/hardcover.rb
345
350
  - spec/internal/app/models/mammal.rb
351
+ - spec/internal/app/models/manufacturer.rb
346
352
  - spec/internal/app/models/product.rb
347
353
  - spec/internal/app/models/tag.rb
348
354
  - spec/internal/app/models/tagging.rb
@@ -351,7 +357,6 @@ files:
351
357
  - spec/internal/app/models/user.rb
352
358
  - spec/internal/config/database.yml
353
359
  - spec/internal/db/schema.rb
354
- - spec/internal/log/.gitignore
355
360
  - spec/internal/tmp/.gitkeep
356
361
  - spec/spec_helper.rb
357
362
  - spec/support/sphinx_yaml_helpers.rb
@@ -420,17 +425,17 @@ require_paths:
420
425
  - lib
421
426
  required_ruby_version: !ruby/object:Gem::Requirement
422
427
  requirements:
423
- - - '>='
428
+ - - ">="
424
429
  - !ruby/object:Gem::Version
425
430
  version: '0'
426
431
  required_rubygems_version: !ruby/object:Gem::Requirement
427
432
  requirements:
428
- - - '>='
433
+ - - ">="
429
434
  - !ruby/object:Gem::Version
430
435
  version: '0'
431
436
  requirements: []
432
437
  rubyforge_project: thinking-sphinx
433
- rubygems_version: 2.1.11
438
+ rubygems_version: 2.2.0
434
439
  signing_key:
435
440
  specification_version: 4
436
441
  summary: A smart wrapper over Sphinx for ActiveRecord
@@ -447,6 +452,7 @@ test_files:
447
452
  - spec/acceptance/index_options_spec.rb
448
453
  - spec/acceptance/indexing_spec.rb
449
454
  - spec/acceptance/paginating_search_results_spec.rb
455
+ - spec/acceptance/real_time_updates_spec.rb
450
456
  - spec/acceptance/remove_deleted_records_spec.rb
451
457
  - spec/acceptance/search_counts_spec.rb
452
458
  - spec/acceptance/search_for_just_ids_spec.rb
@@ -469,6 +475,7 @@ test_files:
469
475
  - spec/internal/app/indices/animal_index.rb
470
476
  - spec/internal/app/indices/article_index.rb
471
477
  - spec/internal/app/indices/book_index.rb
478
+ - spec/internal/app/indices/car_index.rb
472
479
  - spec/internal/app/indices/city_index.rb
473
480
  - spec/internal/app/indices/product_index.rb
474
481
  - spec/internal/app/indices/tee_index.rb
@@ -478,6 +485,7 @@ test_files:
478
485
  - spec/internal/app/models/article.rb
479
486
  - spec/internal/app/models/bird.rb
480
487
  - spec/internal/app/models/book.rb
488
+ - spec/internal/app/models/car.rb
481
489
  - spec/internal/app/models/categorisation.rb
482
490
  - spec/internal/app/models/category.rb
483
491
  - spec/internal/app/models/city.rb
@@ -487,6 +495,7 @@ test_files:
487
495
  - spec/internal/app/models/genre.rb
488
496
  - spec/internal/app/models/hardcover.rb
489
497
  - spec/internal/app/models/mammal.rb
498
+ - spec/internal/app/models/manufacturer.rb
490
499
  - spec/internal/app/models/product.rb
491
500
  - spec/internal/app/models/tag.rb
492
501
  - spec/internal/app/models/tagging.rb
@@ -495,7 +504,6 @@ test_files:
495
504
  - spec/internal/app/models/user.rb
496
505
  - spec/internal/config/database.yml
497
506
  - spec/internal/db/schema.rb
498
- - spec/internal/log/.gitignore
499
507
  - spec/internal/tmp/.gitkeep
500
508
  - spec/spec_helper.rb
501
509
  - spec/support/sphinx_yaml_helpers.rb
@@ -1,58 +0,0 @@
1
- # LOADING ALL CLASSES is invoked by:
2
- # - call define_index
3
- # - loading any model with an index definition
4
- # - because need to add to list of which models have indices.
5
- # - sphinx document id for an instance is requested
6
- # - updating attributes
7
- # - toggling as deleted
8
- # - when generating configuration
9
- # - need to build full configuration file.
10
- # - when loading models_by_crc
11
- # - searches and facet searches pre Sphinx 2
12
- # - facet search
13
- # - search
14
- #
15
- # WHY?
16
- # - need to know which classes are searchable
17
- # - need to track number of indices (multiplier) - STI matters here
18
- # - are a subclass and superclass STI pair both indexed? One offset for both.
19
- # - need to track position of current model within all indexed models (offset)
20
- # - need to generate configuration
21
- # - need to know subclasses available to search on.
22
- #
23
- # SO:
24
- # - load all indices *and* related models when needing document id
25
- # - load all indices *and* related models when generating configuration
26
- # - maybe can avoid loading all indices and/or related models when searching?
27
- # - would need to track ancestor models - harder when no multi-string
28
- # attributes - for filtering on classes. Can we be smart about this and
29
- # only force a full model load if absolutely necessary? And/or forced by
30
- # a flag so developers need to request it?
31
-
32
-
33
-
34
- # Use symbols - avoid loading classes until we need to.
35
- ThinkingSphinx.define_index_for :article do
36
- indexes subject, content
37
- indexes user.name, :as => :user_name
38
-
39
- has user_id
40
- end
41
-
42
- # Or better - let's not add everything to the root of TS module, and make it
43
- # clear of the index driver.
44
- ThinkingSphinx::Index.define :article, :with => :active_record do
45
- indexes subject, content
46
- indexes user.name, :as => :user_name
47
-
48
- has user_id
49
- end
50
-
51
- # Built-in index driver support could be auto-mapped to methods:
52
- ThinkingSphinx::Index.define_with_active_record, :article
53
-
54
- ThinkingSphinx::Index.define_with_realtime :article do
55
- indexes :subject, :content, :user_name
56
-
57
- has user_id => :integer
58
- end
@@ -1 +0,0 @@
1
- *.log