thinking-sphinx 2.0.13 → 2.0.14

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/HISTORY CHANGED
@@ -1,3 +1,8 @@
1
+ 2.0.14 - January 2nd 2012
2
+ * Fix model loading for Rails 3.2.9 when subdirectories exist (Kenn Ejima).
3
+ * Use BasicObject instead of BlankSlate when running on 1.9 (Steve Purcell).
4
+ * 1.4.14 changes.
5
+
1
6
  2.0.13 - August 10th 2012
2
7
  * 1.4.13 changes.
3
8
 
@@ -64,6 +69,15 @@
64
69
  * Rails 3 support.
65
70
  * 1.4.0 changes.
66
71
 
72
+ 1.4.14 - January 2nd 2013
73
+ * Allow sql_query_pre values to come through from config/sphinx.yml (George Ogata).
74
+ * ThinkingSphinx::Search#tap doesn't delegate through to the underlying array.
75
+ * Use fire_delta? instance method in the model (if it exists) to decide whether indexing should happen.
76
+ * Use full query in excerpts so double-stemming of terms is avoided (Jason Rust).
77
+ * Fix thinking_sphinx:version rake task.
78
+ * Directly compare non-string non-nil facet values for facet filters.
79
+ * Don't bother checking with Sphinx whether documents exist when trying to update them. We're catching failures already (and Sphinx usually doesn't care anyway).
80
+
67
81
  1.4.13 - August 10th 2012
68
82
  * Sphinx 2.0.5 support.
69
83
  * Hard retries for Sphinx exceptions (Andrew Hunter).
data/README.textile CHANGED
@@ -232,3 +232,5 @@ Since I first released this library, there's been quite a few people who have su
232
232
  * Simon Hürlimann
233
233
  * Nathan Smith
234
234
  * Cedric Maion
235
+ * Steve Purcell
236
+ * George Ogata
@@ -23,6 +23,7 @@ require 'thinking_sphinx/source'
23
23
  require 'thinking_sphinx/search'
24
24
  require 'thinking_sphinx/search_methods'
25
25
  require 'thinking_sphinx/deltas'
26
+ require 'thinking_sphinx/version'
26
27
 
27
28
  require 'thinking_sphinx/adapters/abstract_adapter'
28
29
  require 'thinking_sphinx/adapters/mysql_adapter'
@@ -268,14 +268,13 @@ module ThinkingSphinx
268
268
  end
269
269
 
270
270
  def delete_in_index(index, document_id)
271
- return unless ThinkingSphinx.sphinx_running? &&
272
- search_for_id(document_id, index)
271
+ return unless ThinkingSphinx.sphinx_running?
273
272
 
274
273
  ThinkingSphinx::Configuration.instance.client.update(
275
274
  index, ['sphinx_deleted'], {document_id => [1]}
276
275
  )
277
276
  rescue Riddle::ConnectionError, Riddle::ResponseError,
278
- ThinkingSphinx::SphinxError, Errno::ETIMEDOUT
277
+ ThinkingSphinx::SphinxError, Errno::ETIMEDOUT, Timeout::Error
279
278
  # Not the end of the world if Sphinx isn't running.
280
279
  end
281
280
 
@@ -3,7 +3,7 @@ module ThinkingSphinx
3
3
  # This module contains all the delta-related code for models. There isn't
4
4
  # really anything you need to call manually in here - except perhaps
5
5
  # index_delta, but not sure what reason why.
6
- #
6
+ #
7
7
  module Delta
8
8
  # Code for after_commit callback is written by Eli Miller:
9
9
  # http://elimiller.blogspot.com/2007/06/proper-cache-expiry-with-aftercommit.html
@@ -18,38 +18,40 @@ module ThinkingSphinx
18
18
  def index_delta(instance = nil)
19
19
  delta_objects.each { |obj| obj.index(self, instance) }
20
20
  end
21
-
21
+
22
22
  def delta_objects
23
23
  self.sphinx_indexes.collect(&:delta_object).compact
24
24
  end
25
25
  end
26
-
26
+
27
27
  def toggled_delta?
28
28
  self.class.delta_objects.any? { |obj| obj.toggled(self) }
29
29
  end
30
-
30
+
31
31
  private
32
-
32
+
33
33
  # Set the delta value for the model to be true.
34
34
  def toggle_delta
35
35
  self.class.delta_objects.each { |obj|
36
36
  obj.toggle(self)
37
37
  } if should_toggle_delta?
38
38
  end
39
-
39
+
40
40
  # Build the delta index for the related model. This won't be called
41
41
  # if running in the test environment.
42
- #
42
+ #
43
43
  def index_delta
44
44
  self.class.index_delta(self) if self.class.delta_objects.any? { |obj|
45
45
  obj.toggled(self)
46
46
  }
47
47
  end
48
-
48
+
49
49
  def should_toggle_delta?
50
+ return fire_delta? if respond_to?(:fire_delta?)
51
+
50
52
  self.new_record? || indexed_data_changed?
51
53
  end
52
-
54
+
53
55
  def indexed_data_changed?
54
56
  sphinx_indexes.any? { |index|
55
57
  index.fields.any? { |field| field.changed?(self) } ||
@@ -14,7 +14,7 @@ module ThinkingSphinx
14
14
  else
15
15
  documentation_link = %Q{
16
16
  For more information, read the documentation:
17
- http://freelancing-god.github.com/ts/en/advanced_config.html
17
+ http://pat.github.com/ts/en/advanced_config.html
18
18
  }
19
19
 
20
20
  if version.nil? || version.empty?
@@ -53,7 +53,7 @@ module ThinkingSphinx
53
53
 
54
54
  SourceOptions = Riddle::Configuration::SQLSource.settings.map { |setting|
55
55
  setting.to_s
56
- } - %w( type sql_query_pre sql_query sql_joined_field sql_file_field
56
+ } - %w( type sql_query sql_joined_field sql_file_field
57
57
  sql_query_range sql_attr_uint sql_attr_bool sql_attr_bigint sql_query_info
58
58
  sql_attr_timestamp sql_attr_str2ordinal sql_attr_float sql_attr_multi
59
59
  sql_attr_string sql_attr_str2wordcount sql_column_buffers sql_field_string
@@ -62,9 +62,14 @@ class ThinkingSphinx::Context
62
62
 
63
63
  begin
64
64
  camelized_model.constantize
65
- rescue LoadError
65
+ rescue LoadError, NameError
66
66
  # Make sure that STI subclasses in subfolders are loaded.
67
- model_name.gsub!(/.*[\/\\]/, '').nil? ? next : retry
67
+ if camelized_model.gsub!(/.+::/, '').nil?
68
+ STDERR.puts "ThinkingSphinx: error loading #{file}"
69
+ next
70
+ else
71
+ retry
72
+ end
68
73
  rescue Exception => err
69
74
  STDERR.puts "Warning: Error loading #{file}:"
70
75
  STDERR.puts err.message
@@ -104,7 +104,14 @@ module ThinkingSphinx
104
104
  method = value_source || column.__name
105
105
  object = objects.one? ? objects.first : objects.detect { |item|
106
106
  result = item.send(method)
107
- result && result.to_crc32 == attribute_value
107
+ case result
108
+ when String
109
+ result.to_crc32 == attribute_value
110
+ when NilClass
111
+ false
112
+ else
113
+ result == attribute_value
114
+ end
108
115
  }
109
116
 
110
117
  object.try(method)
@@ -1,4 +1,4 @@
1
- require 'blankslate'
1
+ require 'blankslate' unless defined?(::BasicObject)
2
2
 
3
3
  module ThinkingSphinx
4
4
  class Index
@@ -14,14 +14,14 @@ module ThinkingSphinx
14
14
  # set_property allows you to set some settings on a per-index basis. Check
15
15
  # out each method's documentation for better ideas of usage.
16
16
  #
17
- class Builder < BlankSlate
17
+ class Builder < (defined?(::BasicObject) ? ::BasicObject : BlankSlate)
18
18
  def self.generate(model, name = nil, &block)
19
- index = ThinkingSphinx::Index.new(model)
19
+ index = ::ThinkingSphinx::Index.new(model)
20
20
  index.name = name unless name.nil?
21
21
 
22
- Builder.new(index, &block) if block_given?
22
+ new(index, &block) if block_given?
23
23
 
24
- index.delta_object = ThinkingSphinx::Deltas.parse index
24
+ index.delta_object = ::ThinkingSphinx::Deltas.parse index
25
25
  index
26
26
  end
27
27
 
@@ -38,7 +38,7 @@ module ThinkingSphinx
38
38
 
39
39
  def define_source(&block)
40
40
  if @explicit_source
41
- @source = ThinkingSphinx::Source.new(@index)
41
+ @source = ::ThinkingSphinx::Source.new(@index)
42
42
  @index.sources << @source
43
43
  else
44
44
  @explicit_source = true
@@ -101,7 +101,8 @@ module ThinkingSphinx
101
101
  def indexes(*args)
102
102
  options = args.extract_options!
103
103
  args.each do |columns|
104
- field = Field.new(source, FauxColumn.coerce(columns), options)
104
+ field = ::ThinkingSphinx::Field.new(source,
105
+ ::ThinkingSphinx::Index::FauxColumn.coerce(columns), options)
105
106
 
106
107
  add_sort_attribute field, options if field.sortable
107
108
  add_facet_attribute field, options if field.faceted
@@ -147,7 +148,8 @@ module ThinkingSphinx
147
148
  def has(*args)
148
149
  options = args.extract_options!
149
150
  args.each do |columns|
150
- attribute = Attribute.new(source, FauxColumn.coerce(columns), options)
151
+ attribute = ::ThinkingSphinx::Attribute.new(source,
152
+ ::ThinkingSphinx::Index::FauxColumn.coerce(columns), options)
151
153
 
152
154
  add_facet_attribute attribute, options if attribute.faceted
153
155
  end
@@ -158,7 +160,8 @@ module ThinkingSphinx
158
160
  options[:facet] = true
159
161
 
160
162
  args.each do |columns|
161
- attribute = Attribute.new(source, FauxColumn.coerce(columns), options)
163
+ attribute = ::ThinkingSphinx::Attribute.new(source,
164
+ ::ThinkingSphinx::Index::FauxColumn.coerce(columns), options)
162
165
 
163
166
  add_facet_attribute attribute, options
164
167
  end
@@ -166,7 +169,7 @@ module ThinkingSphinx
166
169
 
167
170
  def join(*args)
168
171
  args.each do |association|
169
- Join.new(source, association)
172
+ ::ThinkingSphinx::Join.new(source, association)
170
173
  end
171
174
  end
172
175
 
@@ -238,7 +241,7 @@ module ThinkingSphinx
238
241
  # definitions.
239
242
  #
240
243
  def method_missing(method, *args)
241
- FauxColumn.new(method, *args)
244
+ ::ThinkingSphinx::Index::FauxColumn.new(method, *args)
242
245
  end
243
246
 
244
247
  # A method to allow adding fields from associations which have names
@@ -248,7 +251,7 @@ module ThinkingSphinx
248
251
  # Example: indexes assoc(:properties).column
249
252
  #
250
253
  def assoc(assoc, *args)
251
- FauxColumn.new(assoc, *args)
254
+ ::ThinkingSphinx::Index::FauxColumn.new(assoc, *args)
252
255
  end
253
256
 
254
257
  # Use this method to generate SQL for your attributes, conditions, etc.
@@ -265,14 +268,14 @@ module ThinkingSphinx
265
268
 
266
269
  def source
267
270
  @source ||= begin
268
- source = ThinkingSphinx::Source.new(@index)
271
+ source = ::ThinkingSphinx::Source.new(@index)
269
272
  @index.sources << source
270
273
  source
271
274
  end
272
275
  end
273
276
 
274
277
  def set_single_property(key, value)
275
- source_options = ThinkingSphinx::Configuration::SourceOptions
278
+ source_options = ::ThinkingSphinx::Configuration::SourceOptions
276
279
  if source_options.include?(key.to_s)
277
280
  source.options.merge! key => value
278
281
  else
@@ -290,12 +293,12 @@ module ThinkingSphinx
290
293
  end
291
294
 
292
295
  def add_internal_attribute(property, options, suffix, crc = false)
293
- return unless ThinkingSphinx::Facet.translate?(property)
296
+ return unless ::ThinkingSphinx::Facet.translate?(property)
294
297
 
295
- Attribute.new(source,
298
+ ::ThinkingSphinx::Attribute.new(source,
296
299
  property.columns.collect { |col| col.clone },
297
300
  options.merge(
298
- :type => property.is_a?(Field) ? :string : options[:type],
301
+ :type => property.is_a?(::ThinkingSphinx::Field) ? :string : options[:type],
299
302
  :as => property.unique_name.to_s.concat(suffix).to_sym,
300
303
  :crc => crc
301
304
  ).except(:facet)
@@ -12,7 +12,7 @@ module ThinkingSphinx
12
12
  instance_of? instance_values instance_variable_defined?
13
13
  instance_variable_get instance_variable_set instance_variables is_a?
14
14
  kind_of? member? method methods nil? object_id respond_to?
15
- respond_to_missing? send should type )
15
+ respond_to_missing? send should tap type )
16
16
  SafeMethods = %w( partition private_methods protected_methods
17
17
  public_methods send class )
18
18
 
@@ -362,7 +362,7 @@ module ThinkingSphinx
362
362
  client.excerpts(
363
363
  {
364
364
  :docs => [string.to_s],
365
- :words => results[:words].keys.join(' '),
365
+ :words => query,
366
366
  :index => index.split(',').first.strip
367
367
  }.merge(options[:excerpt_options] || {})
368
368
  ).first
@@ -1,3 +1,3 @@
1
1
  module ThinkingSphinx
2
- Version = '2.0.13'
2
+ Version = '2.0.14'
3
3
  end
@@ -112,12 +112,6 @@ describe "ThinkingSphinx::ActiveRecord::Delta" do
112
112
  @person.send(:index_delta)
113
113
  end
114
114
 
115
- it "shouldn't update the deleted attribute if not in the index" do
116
- @client.should_not_receive(:update)
117
-
118
- @person.send(:index_delta)
119
- end
120
-
121
115
  it "should update the deleted attribute if in the core index" do
122
116
  Person.stub!(:search_for_id => true)
123
117
  @client.should_receive(:update)
@@ -273,7 +273,6 @@ describe ThinkingSphinx::ActiveRecord do
273
273
 
274
274
  @configuration.stub!(:client => @client)
275
275
  Person.sphinx_indexes.each { |index| index.stub!(:delta? => false) }
276
- Person.stub!(:search_for_id => true)
277
276
  end
278
277
 
279
278
  it "should update the core index's deleted flag if in core index" do
@@ -284,19 +283,9 @@ describe ThinkingSphinx::ActiveRecord do
284
283
  @person.toggle_deleted
285
284
  end
286
285
 
287
- it "shouldn't update the core index's deleted flag if the record isn't in it" do
288
- Person.stub!(:search_for_id => false)
289
- @client.should_not_receive(:update).with(
290
- "person_core", ["sphinx_deleted"], {@person.sphinx_document_id => [1]}
291
- )
292
-
293
- @person.toggle_deleted
294
- end
295
-
296
286
  it "shouldn't attempt to update the deleted flag if sphinx isn't running" do
297
287
  ThinkingSphinx.stub!(:sphinx_running? => false)
298
288
  @client.should_not_receive(:update)
299
- Person.should_not_receive(:search_for_id)
300
289
 
301
290
  @person.toggle_deleted
302
291
  end
@@ -493,14 +482,6 @@ describe ThinkingSphinx::ActiveRecord do
493
482
  @client = stub('client')
494
483
  ThinkingSphinx.stub!(:sphinx_running? => true)
495
484
  ThinkingSphinx::Configuration.instance.stub!(:client => @client)
496
- Alpha.stub!(:search_for_id => true)
497
- end
498
-
499
- it "should not update if the document isn't in the given index" do
500
- Alpha.stub!(:search_for_id => false)
501
- @client.should_not_receive(:update)
502
-
503
- Alpha.delete_in_index('alpha_core', 42)
504
485
  end
505
486
 
506
487
  it "should direct the update to the supplied index" do
@@ -34,16 +34,17 @@ describe ThinkingSphinx::Context do
34
34
  it "should report name errors but not raise them" do
35
35
  class_name.stub(:constantize).and_raise(NameError)
36
36
  STDERR.stub!(:puts => '')
37
- STDERR.should_receive(:puts).with('Warning: Error loading a.rb:')
37
+ STDERR.should_receive(:puts).with('ThinkingSphinx: error loading a.rb')
38
38
 
39
39
  lambda {
40
40
  ts_context.prepare
41
41
  }.should_not raise_error
42
42
  end
43
43
 
44
- it "should retry if the first load fails and contains a directory" do
45
- model_name_lower.should_receive(:gsub!).twice.and_return(true, nil)
44
+ it "should report load errors but not raise them" do
46
45
  class_name.stub(:constantize).and_raise(LoadError)
46
+ STDERR.stub!(:puts => '')
47
+ STDERR.should_receive(:puts).with('ThinkingSphinx: error loading a.rb')
47
48
 
48
49
  lambda {
49
50
  ts_context.prepare
@@ -1309,7 +1309,7 @@ describe ThinkingSphinx::Search do
1309
1309
  :matches => [],
1310
1310
  :words => {'one' => {}, 'two' => {}}
1311
1311
  })
1312
- @search = ThinkingSphinx::Search.new(:classes => [Alpha])
1312
+ @search = ThinkingSphinx::Search.new('reading comprehension', :classes => [Alpha])
1313
1313
  end
1314
1314
 
1315
1315
  it "should return the Sphinx excerpt value" do
@@ -1341,9 +1341,9 @@ describe ThinkingSphinx::Search do
1341
1341
  @search.excerpt_for('string', Beta)
1342
1342
  end
1343
1343
 
1344
- it "should join the words together" do
1344
+ it "should use the query string" do
1345
1345
  @client.should_receive(:excerpts) do |options|
1346
- options[:words].should == @search.results[:words].keys.join(' ')
1346
+ options[:words].should == 'reading comprehension'
1347
1347
  end
1348
1348
 
1349
1349
  @search.excerpt_for('string', Beta)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thinking-sphinx
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 13
10
- version: 2.0.13
9
+ - 14
10
+ version: 2.0.14
11
11
  platform: ruby
12
12
  authors:
13
13
  - Pat Allan
@@ -15,10 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-08-10 00:00:00 Z
18
+ date: 2013-01-02 00:00:00 +11:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- type: :runtime
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
23
23
  none: false
24
24
  requirements:
@@ -31,10 +31,10 @@ dependencies:
31
31
  - 3
32
32
  version: 3.0.3
33
33
  version_requirements: *id001
34
- prerelease: false
35
34
  name: activerecord
36
- - !ruby/object:Gem::Dependency
35
+ prerelease: false
37
36
  type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
@@ -47,10 +47,10 @@ dependencies:
47
47
  - 3
48
48
  version: 1.5.3
49
49
  version_requirements: *id002
50
- prerelease: false
51
50
  name: riddle
52
- - !ruby/object:Gem::Dependency
51
+ prerelease: false
53
52
  type: :runtime
53
+ - !ruby/object:Gem::Dependency
54
54
  requirement: &id003 !ruby/object:Gem::Requirement
55
55
  none: false
56
56
  requirements:
@@ -63,10 +63,10 @@ dependencies:
63
63
  - 2
64
64
  version: 2.1.2
65
65
  version_requirements: *id003
66
- prerelease: false
67
66
  name: builder
67
+ prerelease: false
68
+ type: :runtime
68
69
  - !ruby/object:Gem::Dependency
69
- type: :development
70
70
  requirement: &id004 !ruby/object:Gem::Requirement
71
71
  none: false
72
72
  requirements:
@@ -79,10 +79,10 @@ dependencies:
79
79
  - 3
80
80
  version: 3.0.3
81
81
  version_requirements: *id004
82
- prerelease: false
83
82
  name: actionpack
84
- - !ruby/object:Gem::Dependency
83
+ prerelease: false
85
84
  type: :development
85
+ - !ruby/object:Gem::Dependency
86
86
  requirement: &id005 !ruby/object:Gem::Requirement
87
87
  none: false
88
88
  requirements:
@@ -95,10 +95,10 @@ dependencies:
95
95
  - 0
96
96
  version: 0.4.0
97
97
  version_requirements: *id005
98
- prerelease: false
99
98
  name: appraisal
100
- - !ruby/object:Gem::Dependency
99
+ prerelease: false
101
100
  type: :development
101
+ - !ruby/object:Gem::Dependency
102
102
  requirement: &id006 !ruby/object:Gem::Requirement
103
103
  none: false
104
104
  requirements:
@@ -111,10 +111,10 @@ dependencies:
111
111
  - 2
112
112
  version: 1.0.2
113
113
  version_requirements: *id006
114
- prerelease: false
115
114
  name: cucumber
116
- - !ruby/object:Gem::Dependency
115
+ prerelease: false
117
116
  type: :development
117
+ - !ruby/object:Gem::Dependency
118
118
  requirement: &id007 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
@@ -127,10 +127,10 @@ dependencies:
127
127
  - 1
128
128
  version: 0.3.1
129
129
  version_requirements: *id007
130
- prerelease: false
131
130
  name: faker
132
- - !ruby/object:Gem::Dependency
131
+ prerelease: false
133
132
  type: :development
133
+ - !ruby/object:Gem::Dependency
134
134
  requirement: &id008 !ruby/object:Gem::Requirement
135
135
  none: false
136
136
  requirements:
@@ -143,10 +143,10 @@ dependencies:
143
143
  - 2
144
144
  version: 0.9.2
145
145
  version_requirements: *id008
146
- prerelease: false
147
146
  name: rake
148
- - !ruby/object:Gem::Dependency
147
+ prerelease: false
149
148
  type: :development
149
+ - !ruby/object:Gem::Dependency
150
150
  requirement: &id009 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
@@ -159,10 +159,10 @@ dependencies:
159
159
  - 0
160
160
  version: 2.6.0
161
161
  version_requirements: *id009
162
- prerelease: false
163
162
  name: rspec
164
- - !ruby/object:Gem::Dependency
163
+ prerelease: false
165
164
  type: :development
165
+ - !ruby/object:Gem::Dependency
166
166
  requirement: &id010 !ruby/object:Gem::Requirement
167
167
  none: false
168
168
  requirements:
@@ -174,10 +174,10 @@ dependencies:
174
174
  - 0
175
175
  version: "3.0"
176
176
  version_requirements: *id010
177
- prerelease: false
178
177
  name: will_paginate
179
- - !ruby/object:Gem::Dependency
178
+ prerelease: false
180
179
  type: :development
180
+ - !ruby/object:Gem::Dependency
181
181
  requirement: &id011 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
@@ -190,8 +190,9 @@ dependencies:
190
190
  - 2
191
191
  version: 0.7.2
192
192
  version_requirements: *id011
193
- prerelease: false
194
193
  name: yard
194
+ prerelease: false
195
+ type: :development
195
196
  description: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
196
197
  email:
197
198
  - pat@freelancing-gods.com
@@ -376,12 +377,13 @@ files:
376
377
  - spec/thinking_sphinx/source_spec.rb
377
378
  - spec/thinking_sphinx/test_spec.rb
378
379
  - spec/thinking_sphinx_spec.rb
379
- homepage: http://freelancing-god.github.com/ts/en/
380
+ has_rdoc: true
381
+ homepage: http://pat.github.com/ts/en/
380
382
  licenses: []
381
383
 
382
384
  post_install_message: |+
383
385
  If you're upgrading, you should read this:
384
- http://freelancing-god.github.com/ts/en/upgrading.html
386
+ http://pat.github.com/ts/en/upgrading.html
385
387
 
386
388
  rdoc_options: []
387
389
 
@@ -408,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
408
410
  requirements: []
409
411
 
410
412
  rubyforge_project: thinking-sphinx
411
- rubygems_version: 1.8.16
413
+ rubygems_version: 1.6.2
412
414
  signing_key:
413
415
  specification_version: 3
414
416
  summary: ActiveRecord/Rails Sphinx library
@@ -536,4 +538,3 @@ test_files:
536
538
  - spec/thinking_sphinx/source_spec.rb
537
539
  - spec/thinking_sphinx/test_spec.rb
538
540
  - spec/thinking_sphinx_spec.rb
539
- has_rdoc: