thinking-sphinx 1.4.10 → 1.4.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -203,3 +203,4 @@ Since I first released this library, there's been quite a few people who have su
203
203
  * Pete Deffendol
204
204
  * Tony Pitale
205
205
  * Kenn Ejima
206
+ * Matthew Barnett
@@ -14,7 +14,7 @@ module ThinkingSphinx
14
14
  clause.split('), ').join(") || '#{separator}' || ")
15
15
  else
16
16
  clause.split(', ').collect { |field|
17
- "CAST(COALESCE(#{field}, '') as varchar)"
17
+ "CAST(COALESCE(#{field}::varchar, '') as varchar)"
18
18
  }.join(" || '#{separator}' || ")
19
19
  end
20
20
  end
@@ -9,10 +9,12 @@ module ThinkingSphinx
9
9
  require 'riddle/1.10'
10
10
  when /2.0.\d/
11
11
  require 'riddle/2.0.1'
12
+ when /2.1.\d/
13
+ require 'riddle/2.1.0'
12
14
  else
13
15
  documentation_link = %Q{
14
16
  For more information, read the documentation:
15
- http://freelancing-god.github.com/ts/en/advanced_config.html
17
+ http://freelancing-god.github.com/ts/en/advanced_config.html
16
18
  }
17
19
 
18
20
  if version.nil? || version.empty?
@@ -111,7 +111,7 @@ module ThinkingSphinx
111
111
  Dir.glob("#{app_root}/vendor/plugins/*/app/models/")
112
112
  self.delayed_job_priority = 0
113
113
  self.indexed_models = []
114
- self.shuffle = true
114
+ self.shuffle = false
115
115
 
116
116
  self.source_options = {}
117
117
  self.index_options = {
@@ -1,5 +1,3 @@
1
- require 'blankslate'
2
-
3
1
  module ThinkingSphinx
4
2
  class Index
5
3
  # The Builder class is the core for the index definition block processing.
@@ -14,7 +12,14 @@ module ThinkingSphinx
14
12
  # set_property allows you to set some settings on a per-index basis. Check
15
13
  # out each method's documentation for better ideas of usage.
16
14
  #
17
- class Builder < BlankSlate
15
+ class Builder
16
+ instance_methods.grep(/^[^_]/).each { |method|
17
+ next if method.to_s == "instance_eval"
18
+ define_method(method) {
19
+ caller.grep(/irb.completion/).empty? ? method_missing(method) : super
20
+ }
21
+ }
22
+
18
23
  def self.generate(model, name = nil, &block)
19
24
  index = ThinkingSphinx::Index.new(model)
20
25
  index.name = name unless name.nil?
@@ -215,7 +215,7 @@ module ThinkingSphinx
215
215
  def next_page?
216
216
  !next_page.nil?
217
217
  end
218
-
218
+
219
219
  def last_page?
220
220
  next_page.nil?
221
221
  end
@@ -254,7 +254,7 @@ module ThinkingSphinx
254
254
  #
255
255
  def total_pages
256
256
  populate
257
- return 0 if @results[:total].nil?
257
+ return 0 if @results.nil? || @results[:total].nil?
258
258
 
259
259
  @total_pages ||= (@results[:total] / per_page.to_f).ceil
260
260
  end
@@ -279,7 +279,7 @@ module ThinkingSphinx
279
279
  #
280
280
  def total_entries
281
281
  populate
282
- return 0 if @results[:total_found].nil?
282
+ return 0 if @results.nil? || @results[:total_found].nil?
283
283
 
284
284
  @total_entries ||= @results[:total_found]
285
285
  end
@@ -296,6 +296,8 @@ module ThinkingSphinx
296
296
  @options[:offset] || ((current_page - 1) * per_page)
297
297
  end
298
298
 
299
+ alias_method :offset_value, :offset
300
+
299
301
  def indexes
300
302
  return options[:index] if options[:index]
301
303
  return '*' if classes.empty?
@@ -5,11 +5,11 @@ module ThinkingSphinx
5
5
  class Source
6
6
  include ThinkingSphinx::Source::InternalProperties
7
7
  include ThinkingSphinx::Source::SQL
8
-
8
+
9
9
  attr_accessor :model, :fields, :attributes, :joins, :conditions, :groupings,
10
10
  :options
11
11
  attr_reader :base, :index, :database_configuration
12
-
12
+
13
13
  def initialize(index, options = {})
14
14
  @index = index
15
15
  @model = index.model
@@ -22,83 +22,83 @@ module ThinkingSphinx
22
22
  @associations = {}
23
23
  @database_configuration = @model.connection.
24
24
  instance_variable_get(:@config).clone
25
-
25
+
26
26
  @base = ::ActiveRecord::Associations::ClassMethods::JoinDependency.new(
27
27
  @model, [], nil
28
28
  )
29
-
29
+
30
30
  unless @model.descends_from_active_record?
31
31
  stored_class = @model.store_full_sti_class ? @model.name : @model.name.demodulize
32
32
  @conditions << "#{@model.quoted_table_name}.#{quote_column(@model.inheritance_column)} = '#{stored_class}'"
33
33
  end
34
-
34
+
35
35
  add_internal_attributes_and_facets
36
36
  end
37
-
37
+
38
38
  def name
39
39
  index.name
40
40
  end
41
-
41
+
42
42
  def to_riddle_for_core(offset, position)
43
43
  source = Riddle::Configuration::SQLSource.new(
44
44
  "#{index.core_name}_#{position}", adapter.sphinx_identifier
45
45
  )
46
-
46
+
47
47
  set_source_database_settings source
48
48
  set_source_fields source
49
49
  set_source_attributes source, offset
50
50
  set_source_settings source
51
51
  set_source_sql source, offset
52
-
52
+
53
53
  source
54
54
  end
55
-
55
+
56
56
  def to_riddle_for_delta(offset, position)
57
57
  source = Riddle::Configuration::SQLSource.new(
58
58
  "#{index.delta_name}_#{position}", adapter.sphinx_identifier
59
59
  )
60
60
  source.parent = "#{index.core_name}_#{position}"
61
-
61
+
62
62
  set_source_database_settings source
63
63
  set_source_fields source
64
64
  set_source_attributes source, offset, true
65
65
  set_source_settings source
66
66
  set_source_sql source, offset, true
67
-
67
+
68
68
  source
69
69
  end
70
-
70
+
71
71
  def delta?
72
72
  !@index.delta_object.nil?
73
73
  end
74
-
74
+
75
75
  # Gets the association stack for a specific key.
76
- #
76
+ #
77
77
  def association(key)
78
78
  @associations[key] ||= Association.children(@model, key)
79
79
  end
80
-
80
+
81
81
  private
82
-
82
+
83
83
  def adapter
84
84
  @adapter ||= @model.sphinx_database_adapter
85
85
  end
86
-
86
+
87
87
  def available_attributes
88
88
  attributes.select { |attrib| attrib.available? }
89
89
  end
90
-
90
+
91
91
  def set_source_database_settings(source)
92
92
  config = @database_configuration
93
-
93
+
94
94
  source.sql_host = config[:host] || "localhost"
95
- source.sql_user = config[:username] || config[:user] || 'root'
95
+ source.sql_user = config[:username] || config[:user] || ENV['USER']
96
96
  source.sql_pass = (config[:password].to_s || "").gsub('#', '\#')
97
97
  source.sql_db = config[:database]
98
98
  source.sql_port = config[:port]
99
99
  source.sql_sock = config[:socket]
100
100
  end
101
-
101
+
102
102
  def set_source_fields(source)
103
103
  fields.each do |field|
104
104
  source.sql_file_field << field.unique_name if field.file?
@@ -106,34 +106,34 @@ module ThinkingSphinx
106
106
  source.sql_field_str2wordcount << field.unique_name if field.with_wordcount?
107
107
  end
108
108
  end
109
-
109
+
110
110
  def set_source_attributes(source, offset, delta = false)
111
111
  available_attributes.each do |attrib|
112
112
  source.send(attrib.type_to_config) << attrib.config_value(offset, delta)
113
113
  end
114
114
  end
115
-
115
+
116
116
  def set_source_sql(source, offset, delta = false)
117
117
  source.sql_query = to_sql(:offset => offset, :delta => delta).gsub(/\n/, ' ')
118
118
  source.sql_query_range = to_sql_query_range(:delta => delta)
119
119
  source.sql_query_info = to_sql_query_info(offset)
120
-
120
+
121
121
  source.sql_query_pre += send(!delta ? :sql_query_pre_for_core : :sql_query_pre_for_delta)
122
-
122
+
123
123
  if @index.local_options[:group_concat_max_len]
124
124
  source.sql_query_pre << "SET SESSION group_concat_max_len = #{@index.local_options[:group_concat_max_len]}"
125
125
  end
126
-
126
+
127
127
  source.sql_query_pre += [adapter.utf8_query_pre].compact if utf8?
128
128
  source.sql_query_pre << adapter.utc_query_pre
129
129
  end
130
-
130
+
131
131
  def set_source_settings(source)
132
132
  config = ThinkingSphinx::Configuration.instance
133
133
  config.source_options.each do |key, value|
134
134
  source.send("#{key}=".to_sym, value)
135
135
  end
136
-
136
+
137
137
  source_options = ThinkingSphinx::Configuration::SourceOptions
138
138
  @options.each do |key, value|
139
139
  if source_options.include?(key.to_s) && !value.nil?
@@ -141,11 +141,11 @@ module ThinkingSphinx
141
141
  end
142
142
  end
143
143
  end
144
-
144
+
145
145
  # Returns all associations used amongst all the fields and attributes.
146
146
  # This includes all associations between the model and what the actual
147
147
  # columns are from.
148
- #
148
+ #
149
149
  def all_associations
150
150
  @all_associations ||= (
151
151
  # field associations
@@ -165,7 +165,7 @@ module ThinkingSphinx
165
165
  assoc.ancestors
166
166
  }.flatten.uniq
167
167
  end
168
-
168
+
169
169
  def utf8?
170
170
  @index.options[:charset_type] =~ /utf-8|zh_cn.utf-8/
171
171
  end
@@ -1,3 +1,3 @@
1
1
  module ThinkingSphinx
2
- Version = '1.4.10'
2
+ Version = '1.4.11'
3
3
  end
@@ -5,65 +5,73 @@ describe ThinkingSphinx::AutoVersion do
5
5
  before :each do
6
6
  @config = ThinkingSphinx::Configuration.instance
7
7
  end
8
-
8
+
9
9
  it "should require 0.9.8 if that is the detected version" do
10
10
  ThinkingSphinx::AutoVersion.should_receive(:require).
11
11
  with('riddle/0.9.8')
12
-
12
+
13
13
  @config.stub!(:version => '0.9.8')
14
14
  ThinkingSphinx::AutoVersion.detect
15
15
  end
16
-
16
+
17
17
  it "should require 0.9.9 if that is the detected version" do
18
18
  ThinkingSphinx::AutoVersion.should_receive(:require).
19
19
  with('riddle/0.9.9')
20
-
20
+
21
21
  @config.stub!(:version => '0.9.9')
22
22
  ThinkingSphinx::AutoVersion.detect
23
23
  end
24
-
24
+
25
25
  it "should require 1.10-beta if that is the detected version" do
26
26
  ThinkingSphinx::AutoVersion.should_receive(:require).
27
27
  with('riddle/1.10')
28
-
28
+
29
29
  @config.stub!(:version => '1.10-beta')
30
30
  ThinkingSphinx::AutoVersion.detect
31
31
  end
32
-
32
+
33
33
  it "should require 1.10-beta if using 1.10-beta compiled with id64 support" do
34
34
  ThinkingSphinx::AutoVersion.should_receive(:require).
35
35
  with('riddle/1.10')
36
-
36
+
37
37
  @config.stub!(:version => '1.10-id64-beta')
38
38
  ThinkingSphinx::AutoVersion.detect
39
39
  end
40
-
40
+
41
41
  it "should require 2.0.1 if using Sphinx 2.0.1 beta" do
42
42
  ThinkingSphinx::AutoVersion.should_receive(:require).
43
43
  with('riddle/2.0.1')
44
-
44
+
45
45
  @config.stub!(:version => '2.0.1-beta')
46
46
  ThinkingSphinx::AutoVersion.detect
47
47
  end
48
-
48
+
49
49
  it "should require 2.0.1 if using Sphinx 2.0.2 dev" do
50
50
  ThinkingSphinx::AutoVersion.should_receive(:require).
51
51
  with('riddle/2.0.1')
52
-
52
+
53
53
  @config.stub!(:version => '2.0.2-dev')
54
54
  ThinkingSphinx::AutoVersion.detect
55
55
  end
56
-
56
+
57
+ it "should require 2.1.0 if using Sphinx 2.1.0 dev" do
58
+ ThinkingSphinx::AutoVersion.should_receive(:require).
59
+ with('riddle/2.1.0')
60
+
61
+ @config.stub!(:version => '2.1.0-dev')
62
+ ThinkingSphinx::AutoVersion.detect
63
+ end
64
+
57
65
  it "should output a warning if the detected version is unsupported" do
58
66
  STDERR.should_receive(:puts).with(/unsupported/i)
59
-
67
+
60
68
  @config.stub!(:version => '0.9.7')
61
69
  ThinkingSphinx::AutoVersion.detect
62
70
  end
63
-
71
+
64
72
  it "should output a warning if the version cannot be determined" do
65
73
  STDERR.should_receive(:puts).at_least(:once)
66
-
74
+
67
75
  @config.stub!(:version => nil)
68
76
  ThinkingSphinx::AutoVersion.detect
69
77
  end
@@ -5,36 +5,36 @@ describe ThinkingSphinx::Source do
5
5
  @index = ThinkingSphinx::Index.new(Person)
6
6
  @source = ThinkingSphinx::Source.new(@index, :sql_range_step => 1000)
7
7
  end
8
-
8
+
9
9
  describe '#initialize' do
10
10
  it "should store the current connection details" do
11
11
  config = Person.connection.instance_variable_get(:@config)
12
12
  @source.database_configuration.should == config
13
13
  end
14
14
  end
15
-
15
+
16
16
  it "should generate the name from the model" do
17
17
  @source.name.should == "person"
18
18
  end
19
-
19
+
20
20
  it "should handle namespaced models for name generation" do
21
21
  index = ThinkingSphinx::Index.new(Admin::Person)
22
22
  source = ThinkingSphinx::Source.new(index)
23
23
  source.name.should == "admin_person"
24
24
  end
25
-
25
+
26
26
  describe "#to_riddle_for_core" do
27
27
  before :each do
28
28
  config = ThinkingSphinx::Configuration.instance
29
29
  config.source_options[:sql_ranged_throttle] = 100
30
-
30
+
31
31
  ThinkingSphinx::Field.new(
32
32
  @source, ThinkingSphinx::Index::FauxColumn.new(:first_name)
33
33
  )
34
34
  ThinkingSphinx::Field.new(
35
35
  @source, ThinkingSphinx::Index::FauxColumn.new(:last_name)
36
36
  )
37
-
37
+
38
38
  ThinkingSphinx::Attribute.new(
39
39
  @source, ThinkingSphinx::Index::FauxColumn.new(:id), :as => :internal_id
40
40
  )
@@ -52,31 +52,31 @@ describe ThinkingSphinx::Source do
52
52
  @source, ThinkingSphinx::Index::FauxColumn.new(:source, :id),
53
53
  :as => :source_id, :type => :integer
54
54
  )
55
-
55
+
56
56
  ThinkingSphinx::Join.new(
57
57
  @source, ThinkingSphinx::Index::FauxColumn.new(:links)
58
58
  )
59
-
59
+
60
60
  @source.conditions << "`birthday` <= NOW()"
61
61
  @source.groupings << "`first_name`"
62
-
62
+
63
63
  @index.local_options[:group_concat_max_len] = 1024
64
-
64
+
65
65
  @riddle = @source.to_riddle_for_core(1, 0)
66
66
  end
67
-
67
+
68
68
  it "should generate a Riddle Source object" do
69
69
  @riddle.should be_a_kind_of(Riddle::Configuration::SQLSource)
70
70
  end
71
-
71
+
72
72
  it "should use the index and name its own name" do
73
73
  @riddle.name.should == "person_core_0"
74
74
  end
75
-
75
+
76
76
  it "should use the model's database connection to determine type" do
77
77
  @riddle.type.should == "mysql"
78
78
  end
79
-
79
+
80
80
  it "should match the model's database settings" do
81
81
  config = Person.connection.instance_variable_get(:@config)
82
82
  @riddle.sql_db.should == config[:database]
@@ -86,123 +86,123 @@ describe ThinkingSphinx::Source do
86
86
  @riddle.sql_port.should == config[:port]
87
87
  @riddle.sql_sock.should == config[:socket]
88
88
  end
89
-
90
- it "should use a default username of root if nothing else is provided" do
89
+
90
+ it "should use a environment user if nothing else is provided" do
91
91
  Person.connection.stub!(:instance_variable_get => {
92
92
  :user => nil,
93
93
  :username => nil
94
94
  })
95
95
  @source = ThinkingSphinx::Source.new(@index)
96
-
96
+
97
97
  riddle = @source.to_riddle_for_core(1, 0)
98
- riddle.sql_user.should == 'root'
98
+ riddle.sql_user.should == ENV['USER']
99
99
  end
100
-
100
+
101
101
  it "should assign attributes" do
102
102
  # 3 internal attributes plus the one requested
103
103
  @riddle.sql_attr_uint.length.should == 4
104
104
  @riddle.sql_attr_uint.last.should == :internal_id
105
-
105
+
106
106
  @riddle.sql_attr_timestamp.length.should == 1
107
107
  @riddle.sql_attr_timestamp.first.should == :birthday
108
108
  end
109
-
109
+
110
110
  it "should not include an attribute definition for polymorphic references without data" do
111
111
  @riddle.sql_attr_uint.select { |uint|
112
112
  uint == :source_id
113
113
  }.should be_empty
114
114
  end
115
-
115
+
116
116
  it "should set Sphinx Source options" do
117
117
  @riddle.sql_range_step.should == 1000
118
118
  @riddle.sql_ranged_throttle.should == 100
119
119
  end
120
-
120
+
121
121
  describe "#sql_query" do
122
122
  before :each do
123
123
  @query = @riddle.sql_query
124
124
  end
125
-
125
+
126
126
  it "should select data from the model table" do
127
127
  @query.should match(/FROM `people`/)
128
128
  end
129
-
129
+
130
130
  it "should select each of the fields" do
131
131
  @query.should match(/`first_name`.+FROM/)
132
132
  @query.should match(/`last_name`.+FROM/)
133
133
  end
134
-
134
+
135
135
  it "should select each of the attributes" do
136
136
  @query.should match(/`id` AS `internal_id`.+FROM/)
137
137
  @query.should match(/`birthday`.+FROM/)
138
138
  @query.should match(/`tags`.`id`.+ AS `tag_ids`.+FROM/)
139
139
  end
140
-
140
+
141
141
  it "should not match the sourced MVA attribute" do
142
142
  @query.should_not match(/contact_ids/)
143
143
  end
144
-
144
+
145
145
  it "should include joins for required associations" do
146
146
  @query.should match(/LEFT OUTER JOIN `tags`/)
147
147
  end
148
-
148
+
149
149
  it "should not include joins for the sourced MVA attribute" do
150
150
  @query.should_not match(/LEFT OUTER JOIN `contacts`/)
151
151
  end
152
-
152
+
153
153
  it "should include explicitly requested joins" do
154
154
  @query.should match(/LEFT OUTER JOIN `links`/)
155
155
  end
156
-
156
+
157
157
  it "should include any defined conditions" do
158
158
  @query.should match(/WHERE.+`birthday` <= NOW()/)
159
159
  end
160
-
160
+
161
161
  it "should include any defined groupings" do
162
162
  @query.should match(/GROUP BY.+`first_name`/)
163
163
  end
164
164
  end
165
-
165
+
166
166
  describe "#sql_query_range" do
167
167
  before :each do
168
168
  @query = @riddle.sql_query_range
169
169
  end
170
-
170
+
171
171
  it "should select data from the model table" do
172
172
  @query.should match(/FROM `people`/)
173
173
  end
174
-
174
+
175
175
  it "should select the minimum and the maximum ids" do
176
176
  @query.should match(/SELECT.+MIN.+MAX.+FROM/)
177
177
  end
178
178
  end
179
-
179
+
180
180
  describe "#sql_query_info" do
181
181
  before :each do
182
182
  @query = @riddle.sql_query_info
183
183
  end
184
-
184
+
185
185
  it "should select all fields from the model table" do
186
186
  @query.should match(/SELECT \* FROM `people`/)
187
187
  end
188
-
188
+
189
189
  it "should filter the primary key with the offset" do
190
190
  model_count = ThinkingSphinx.context.indexed_models.size
191
191
  @query.should match(/WHERE `id` = \(\(\$id - 1\) \/ #{model_count}\)/)
192
192
  end
193
193
  end
194
-
194
+
195
195
  describe "#sql_query_pre" do
196
196
  before :each do
197
197
  @queries = @riddle.sql_query_pre
198
198
  end
199
-
199
+
200
200
  it "should default to just the UTF8 statement" do
201
201
  @queries.detect { |query|
202
202
  query == "SET NAMES utf8"
203
203
  }.should_not be_nil
204
204
  end
205
-
205
+
206
206
  it "should set the group_concat_max_len session value for MySQL if requested" do
207
207
  @queries.detect { |query|
208
208
  query == "SET SESSION group_concat_max_len = 1024"
@@ -210,41 +210,41 @@ describe ThinkingSphinx::Source do
210
210
  end
211
211
  end
212
212
  end
213
-
213
+
214
214
  describe "#to_riddle_for_core with range disabled" do
215
215
  before :each do
216
216
  ThinkingSphinx::Field.new(
217
217
  @source, ThinkingSphinx::Index::FauxColumn.new(:first_name)
218
218
  )
219
219
  end
220
-
220
+
221
221
  describe "set per-index" do
222
222
  before :each do
223
223
  @index.local_options[:disable_range] = true
224
224
  @riddle = @source.to_riddle_for_core(1, 0)
225
225
  end
226
-
226
+
227
227
  it "should not have the range in the sql_query" do
228
228
  @riddle.sql_query.should_not match(/`people`.`id` >= \$start/)
229
229
  @riddle.sql_query.should_not match(/`people`.`id` <= \$end/)
230
230
  end
231
-
231
+
232
232
  it "should not have a sql_query_range" do
233
233
  @riddle.sql_query_range.should be_nil
234
234
  end
235
235
  end
236
-
236
+
237
237
  describe "set globally" do
238
238
  before :each do
239
239
  ThinkingSphinx::Configuration.instance.index_options[:disable_range] = true
240
240
  @riddle = @source.to_riddle_for_core(1, 0)
241
241
  end
242
-
242
+
243
243
  it "should not have the range in the sql_query" do
244
244
  @riddle.sql_query.should_not match(/`people`.`id` >= \$start/)
245
245
  @riddle.sql_query.should_not match(/`people`.`id` <= \$end/)
246
246
  end
247
-
247
+
248
248
  it "should not have a sql_query_range" do
249
249
  @riddle.sql_query_range.should be_nil
250
250
  end
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: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 10
10
- version: 1.4.10
9
+ - 11
10
+ version: 1.4.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Pat Allan
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-04 00:00:00 +02:00
18
+ date: 2012-01-02 00:00:00 +11:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -74,25 +74,9 @@ dependencies:
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  requirement: *id003
77
- - !ruby/object:Gem::Dependency
78
- name: builder
79
- version_requirements: &id004 !ruby/object:Gem::Requirement
80
- none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 15
85
- segments:
86
- - 2
87
- - 1
88
- - 2
89
- version: 2.1.2
90
- type: :runtime
91
- prerelease: false
92
- requirement: *id004
93
77
  - !ruby/object:Gem::Dependency
94
78
  name: cucumber
95
- version_requirements: &id005 !ruby/object:Gem::Requirement
79
+ version_requirements: &id004 !ruby/object:Gem::Requirement
96
80
  none: false
97
81
  requirements:
98
82
  - - "="
@@ -105,10 +89,10 @@ dependencies:
105
89
  version: 1.0.2
106
90
  type: :development
107
91
  prerelease: false
108
- requirement: *id005
92
+ requirement: *id004
109
93
  - !ruby/object:Gem::Dependency
110
94
  name: faker
111
- version_requirements: &id006 !ruby/object:Gem::Requirement
95
+ version_requirements: &id005 !ruby/object:Gem::Requirement
112
96
  none: false
113
97
  requirements:
114
98
  - - "="
@@ -121,10 +105,10 @@ dependencies:
121
105
  version: 0.3.1
122
106
  type: :development
123
107
  prerelease: false
124
- requirement: *id006
108
+ requirement: *id005
125
109
  - !ruby/object:Gem::Dependency
126
110
  name: ginger
127
- version_requirements: &id007 !ruby/object:Gem::Requirement
111
+ version_requirements: &id006 !ruby/object:Gem::Requirement
128
112
  none: false
129
113
  requirements:
130
114
  - - "="
@@ -137,10 +121,10 @@ dependencies:
137
121
  version: 1.2.0
138
122
  type: :development
139
123
  prerelease: false
140
- requirement: *id007
124
+ requirement: *id006
141
125
  - !ruby/object:Gem::Dependency
142
126
  name: rake
143
- version_requirements: &id008 !ruby/object:Gem::Requirement
127
+ version_requirements: &id007 !ruby/object:Gem::Requirement
144
128
  none: false
145
129
  requirements:
146
130
  - - ">="
@@ -153,10 +137,10 @@ dependencies:
153
137
  version: 0.9.2
154
138
  type: :development
155
139
  prerelease: false
156
- requirement: *id008
140
+ requirement: *id007
157
141
  - !ruby/object:Gem::Dependency
158
142
  name: rspec
159
- version_requirements: &id009 !ruby/object:Gem::Requirement
143
+ version_requirements: &id008 !ruby/object:Gem::Requirement
160
144
  none: false
161
145
  requirements:
162
146
  - - "="
@@ -169,10 +153,10 @@ dependencies:
169
153
  version: 2.6.0
170
154
  type: :development
171
155
  prerelease: false
172
- requirement: *id009
156
+ requirement: *id008
173
157
  - !ruby/object:Gem::Dependency
174
158
  name: will_paginate
175
- version_requirements: &id010 !ruby/object:Gem::Requirement
159
+ version_requirements: &id009 !ruby/object:Gem::Requirement
176
160
  none: false
177
161
  requirements:
178
162
  - - "="
@@ -185,10 +169,10 @@ dependencies:
185
169
  version: 2.3.15
186
170
  type: :development
187
171
  prerelease: false
188
- requirement: *id010
172
+ requirement: *id009
189
173
  - !ruby/object:Gem::Dependency
190
174
  name: yard
191
- version_requirements: &id011 !ruby/object:Gem::Requirement
175
+ version_requirements: &id010 !ruby/object:Gem::Requirement
192
176
  none: false
193
177
  requirements:
194
178
  - - ">="
@@ -201,7 +185,7 @@ dependencies:
201
185
  version: 0.7.2
202
186
  type: :development
203
187
  prerelease: false
204
- requirement: *id011
188
+ requirement: *id010
205
189
  description: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
206
190
  email:
207
191
  - pat@freelancing-gods.com