thinking-sphinx 3.0.5 → 3.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/HISTORY +25 -0
  4. data/README.textile +2 -2
  5. data/lib/thinking_sphinx.rb +5 -0
  6. data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +1 -1
  7. data/lib/thinking_sphinx/active_record/database_adapters/mysql_adapter.rb +1 -1
  8. data/lib/thinking_sphinx/active_record/database_adapters/postgresql_adapter.rb +1 -1
  9. data/lib/thinking_sphinx/active_record/property_sql_presenter.rb +10 -2
  10. data/lib/thinking_sphinx/active_record/sql_builder/clause_builder.rb +6 -7
  11. data/lib/thinking_sphinx/active_record/sql_builder/query.rb +8 -4
  12. data/lib/thinking_sphinx/active_record/sql_builder/statement.rb +7 -4
  13. data/lib/thinking_sphinx/active_record/sql_source.rb +1 -1
  14. data/lib/thinking_sphinx/configuration.rb +8 -3
  15. data/lib/thinking_sphinx/connection.rb +2 -0
  16. data/lib/thinking_sphinx/deletion.rb +1 -1
  17. data/lib/thinking_sphinx/deltas.rb +1 -1
  18. data/lib/thinking_sphinx/deltas/delete_job.rb +1 -1
  19. data/lib/thinking_sphinx/errors.rb +8 -0
  20. data/lib/thinking_sphinx/excerpter.rb +2 -2
  21. data/lib/thinking_sphinx/facet.rb +2 -2
  22. data/lib/thinking_sphinx/facet_search.rb +2 -1
  23. data/lib/thinking_sphinx/float_formatter.rb +33 -0
  24. data/lib/thinking_sphinx/index_set.rb +2 -4
  25. data/lib/thinking_sphinx/masks/group_enumerators_mask.rb +4 -3
  26. data/lib/thinking_sphinx/masks/scopes_mask.rb +5 -0
  27. data/lib/thinking_sphinx/masks/weight_enumerator_mask.rb +1 -1
  28. data/lib/thinking_sphinx/middlewares/active_record_translator.rb +6 -1
  29. data/lib/thinking_sphinx/middlewares/geographer.rb +10 -4
  30. data/lib/thinking_sphinx/middlewares/sphinxql.rb +14 -11
  31. data/lib/thinking_sphinx/middlewares/utf8.rb +2 -3
  32. data/lib/thinking_sphinx/panes/weight_pane.rb +1 -1
  33. data/lib/thinking_sphinx/rake_interface.rb +9 -7
  34. data/lib/thinking_sphinx/real_time/interpreter.rb +18 -0
  35. data/lib/thinking_sphinx/real_time/property.rb +4 -2
  36. data/lib/thinking_sphinx/search.rb +11 -10
  37. data/lib/thinking_sphinx/sphinxql.rb +17 -0
  38. data/lib/thinking_sphinx/tasks.rb +5 -1
  39. data/lib/thinking_sphinx/utf8.rb +16 -0
  40. data/spec/acceptance/attribute_access_spec.rb +4 -2
  41. data/spec/acceptance/searching_within_a_model_spec.rb +6 -0
  42. data/spec/acceptance/sorting_search_results_spec.rb +7 -0
  43. data/spec/acceptance/support/sphinx_controller.rb +5 -0
  44. data/spec/internal/app/indices/city_index.rb +1 -0
  45. data/spec/internal/app/indices/product_index.rb +1 -1
  46. data/spec/internal/tmp/.gitkeep +0 -0
  47. data/spec/thinking_sphinx/active_record/base_spec.rb +10 -0
  48. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +3 -2
  49. data/spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb +1 -1
  50. data/spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb +2 -2
  51. data/spec/thinking_sphinx/active_record/field_spec.rb +13 -0
  52. data/spec/thinking_sphinx/active_record/property_sql_presenter_spec.rb +13 -0
  53. data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +62 -2
  54. data/spec/thinking_sphinx/configuration_spec.rb +1 -1
  55. data/spec/thinking_sphinx/deletion_spec.rb +4 -2
  56. data/spec/thinking_sphinx/deltas/default_delta_spec.rb +2 -1
  57. data/spec/thinking_sphinx/deltas_spec.rb +17 -6
  58. data/spec/thinking_sphinx/errors_spec.rb +7 -0
  59. data/spec/thinking_sphinx/facet_search_spec.rb +6 -6
  60. data/spec/thinking_sphinx/masks/scopes_mask_spec.rb +64 -0
  61. data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +17 -1
  62. data/spec/thinking_sphinx/middlewares/geographer_spec.rb +11 -0
  63. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +11 -0
  64. data/spec/thinking_sphinx/panes/weight_pane_spec.rb +1 -1
  65. data/spec/thinking_sphinx/rake_interface_spec.rb +6 -0
  66. data/spec/thinking_sphinx/real_time/field_spec.rb +13 -0
  67. data/spec/thinking_sphinx/real_time/interpreter_spec.rb +40 -0
  68. data/thinking-sphinx.gemspec +3 -2
  69. metadata +12 -8
  70. data/spec/internal/.gitignore +0 -1
@@ -6,11 +6,14 @@ module ActiveRecord
6
6
  class Base; end
7
7
  end
8
8
 
9
+ require 'active_support/core_ext/module/attribute_accessors'
9
10
  require 'active_support/core_ext/module/delegation'
10
11
  require 'active_support/core_ext/object/blank'
11
12
  require 'active_support/core_ext/string/inflections'
12
13
  require 'thinking_sphinx/middlewares/middleware'
13
14
  require 'thinking_sphinx/middlewares/sphinxql'
15
+ require 'thinking_sphinx/errors'
16
+ require 'thinking_sphinx/sphinxql'
14
17
 
15
18
  describe ThinkingSphinx::Middlewares::SphinxQL do
16
19
  let(:app) { double('app', :call => true) }
@@ -58,6 +61,14 @@ describe ThinkingSphinx::Middlewares::SphinxQL do
58
61
  middleware.call [context]
59
62
  end
60
63
 
64
+ it "raises an exception if there's no matching indices" do
65
+ index_set.clear
66
+
67
+ expect {
68
+ middleware.call [context]
69
+ }.to raise_error(ThinkingSphinx::NoIndicesError)
70
+ end
71
+
61
72
  it "generates a Sphinx query from the provided keyword and conditions" do
62
73
  search.stub :query => 'tasty'
63
74
  search.options[:conditions] = {:title => 'pancakes'}
@@ -12,7 +12,7 @@ describe ThinkingSphinx::Panes::WeightPane do
12
12
 
13
13
  describe '#weight' do
14
14
  it "returns the object's weight by default" do
15
- raw['@weight'] = 101
15
+ raw[ThinkingSphinx::SphinxQL.weight] = 101
16
16
 
17
17
  pane.weight.should == 101
18
18
  end
@@ -105,6 +105,12 @@ describe ThinkingSphinx::RakeInterface do
105
105
 
106
106
  interface.index
107
107
  end
108
+
109
+ it "does not index verbosely if requested" do
110
+ controller.should_receive(:index).with(:verbose => false)
111
+
112
+ interface.index true, false
113
+ end
108
114
  end
109
115
 
110
116
  describe '#start' do
@@ -4,6 +4,19 @@ describe ThinkingSphinx::RealTime::Field do
4
4
  let(:field) { ThinkingSphinx::RealTime::Field.new column }
5
5
  let(:column) { double('column', :__name => :created_at, :__stack => []) }
6
6
 
7
+ describe '#column' do
8
+ it 'returns the provided Column object' do
9
+ field.column.should == column
10
+ end
11
+
12
+ it 'translates symbols to Column objects' do
13
+ ThinkingSphinx::ActiveRecord::Column.should_receive(:new).with(:title).
14
+ and_return(column)
15
+
16
+ ThinkingSphinx::RealTime::Field.new :title
17
+ end
18
+ end
19
+
7
20
  describe '#name' do
8
21
  it "uses the provided option by default" do
9
22
  field = ThinkingSphinx::RealTime::Field.new column, :as => :foo
@@ -98,6 +98,46 @@ describe ThinkingSphinx::RealTime::Interpreter do
98
98
  saved_field == field
99
99
  }.length.should == 2
100
100
  end
101
+
102
+ context 'sortable' do
103
+ let(:attribute) { double('attribute') }
104
+
105
+ before :each do
106
+ ThinkingSphinx::RealTime::Attribute.stub! :new => attribute
107
+
108
+ column.stub :__name => :col
109
+ end
110
+
111
+ it "adds the _sort suffix to the field's name" do
112
+ ThinkingSphinx::RealTime::Attribute.should_receive(:new).
113
+ with(column, :as => :col_sort, :type => :string).
114
+ and_return(attribute)
115
+
116
+ instance.indexes column, :sortable => true
117
+ end
118
+
119
+ it "respects given aliases" do
120
+ ThinkingSphinx::RealTime::Attribute.should_receive(:new).
121
+ with(column, :as => :other_sort, :type => :string).
122
+ and_return(attribute)
123
+
124
+ instance.indexes column, :sortable => true, :as => :other
125
+ end
126
+
127
+ it "respects symbols instead of columns" do
128
+ ThinkingSphinx::RealTime::Attribute.should_receive(:new).
129
+ with(:title, :as => :title_sort, :type => :string).
130
+ and_return(attribute)
131
+
132
+ instance.indexes :title, :sortable => true
133
+ end
134
+
135
+ it "adds an attribute to the index" do
136
+ instance.indexes column, :sortable => true
137
+
138
+ index.attributes.should include(attribute)
139
+ end
140
+ end
101
141
  end
102
142
 
103
143
  describe '#method_missing' do
@@ -3,13 +3,14 @@ $:.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.0.5'
6
+ s.version = '3.0.6'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Pat Allan"]
9
9
  s.email = ["pat@freelancing-gods.com"]
10
10
  s.homepage = 'http://pat.github.com/ts/en'
11
11
  s.summary = 'A smart wrapper over Sphinx for ActiveRecord'
12
12
  s.description = %Q{An intelligent layer for ActiveRecord (via Rails and Sinatra) for the Sphinx full-text search tool.}
13
+ s.license = 'MIT'
13
14
 
14
15
  s.rubyforge_project = 'thinking-sphinx'
15
16
 
@@ -24,7 +25,7 @@ Gem::Specification.new do |s|
24
25
  s.add_runtime_dependency 'builder', '>= 2.1.2'
25
26
  s.add_runtime_dependency 'middleware', '>= 0.1.0'
26
27
  s.add_runtime_dependency 'innertube', '>= 1.0.2'
27
- s.add_runtime_dependency 'riddle', '>= 1.5.8'
28
+ s.add_runtime_dependency 'riddle', '>= 1.5.9'
28
29
 
29
30
  s.add_development_dependency 'appraisal', '~> 0.4.0'
30
31
  s.add_development_dependency 'combustion', '~> 0.4.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thinking-sphinx
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Allan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-26 00:00:00.000000000 Z
11
+ date: 2013-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - '>='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.5.8
75
+ version: 1.5.9
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
- version: 1.5.8
82
+ version: 1.5.9
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: appraisal
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -215,6 +215,7 @@ files:
215
215
  - lib/thinking_sphinx/excerpter.rb
216
216
  - lib/thinking_sphinx/facet.rb
217
217
  - lib/thinking_sphinx/facet_search.rb
218
+ - lib/thinking_sphinx/float_formatter.rb
218
219
  - lib/thinking_sphinx/frameworks.rb
219
220
  - lib/thinking_sphinx/frameworks/plain.rb
220
221
  - lib/thinking_sphinx/frameworks/rails.rb
@@ -262,9 +263,11 @@ files:
262
263
  - lib/thinking_sphinx/search/query.rb
263
264
  - lib/thinking_sphinx/search/stale_ids_exception.rb
264
265
  - lib/thinking_sphinx/sinatra.rb
266
+ - lib/thinking_sphinx/sphinxql.rb
265
267
  - lib/thinking_sphinx/subscribers/populator_subscriber.rb
266
268
  - lib/thinking_sphinx/tasks.rb
267
269
  - lib/thinking_sphinx/test.rb
270
+ - lib/thinking_sphinx/utf8.rb
268
271
  - sketchpad.rb
269
272
  - spec/acceptance/association_scoping_spec.rb
270
273
  - spec/acceptance/attribute_access_spec.rb
@@ -295,7 +298,6 @@ files:
295
298
  - spec/acceptance/support/sphinx_helpers.rb
296
299
  - spec/acceptance/suspended_deltas_spec.rb
297
300
  - spec/fixtures/database.yml
298
- - spec/internal/.gitignore
299
301
  - spec/internal/app/indices/admin_person_index.rb
300
302
  - spec/internal/app/indices/animal_index.rb
301
303
  - spec/internal/app/indices/article_index.rb
@@ -327,6 +329,7 @@ files:
327
329
  - spec/internal/config/database.yml
328
330
  - spec/internal/db/schema.rb
329
331
  - spec/internal/log/.gitignore
332
+ - spec/internal/tmp/.gitkeep
330
333
  - spec/spec_helper.rb
331
334
  - spec/support/sphinx_yaml_helpers.rb
332
335
  - spec/thinking_sphinx/active_record/association_spec.rb
@@ -385,7 +388,8 @@ files:
385
388
  - spec/thinking_sphinx_spec.rb
386
389
  - thinking-sphinx.gemspec
387
390
  homepage: http://pat.github.com/ts/en
388
- licenses: []
391
+ licenses:
392
+ - MIT
389
393
  metadata: {}
390
394
  post_install_message:
391
395
  rdoc_options: []
@@ -403,7 +407,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
403
407
  version: '0'
404
408
  requirements: []
405
409
  rubyforge_project: thinking-sphinx
406
- rubygems_version: 2.0.2
410
+ rubygems_version: 2.1.2
407
411
  signing_key:
408
412
  specification_version: 4
409
413
  summary: A smart wrapper over Sphinx for ActiveRecord
@@ -437,7 +441,6 @@ test_files:
437
441
  - spec/acceptance/support/sphinx_helpers.rb
438
442
  - spec/acceptance/suspended_deltas_spec.rb
439
443
  - spec/fixtures/database.yml
440
- - spec/internal/.gitignore
441
444
  - spec/internal/app/indices/admin_person_index.rb
442
445
  - spec/internal/app/indices/animal_index.rb
443
446
  - spec/internal/app/indices/article_index.rb
@@ -469,6 +472,7 @@ test_files:
469
472
  - spec/internal/config/database.yml
470
473
  - spec/internal/db/schema.rb
471
474
  - spec/internal/log/.gitignore
475
+ - spec/internal/tmp/.gitkeep
472
476
  - spec/spec_helper.rb
473
477
  - spec/support/sphinx_yaml_helpers.rb
474
478
  - spec/thinking_sphinx/active_record/association_spec.rb
@@ -1 +0,0 @@
1
- tmp