dpickett-thinking-sphinx 1.1.4

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 (79) hide show
  1. data/LICENCE +20 -0
  2. data/README +107 -0
  3. data/lib/thinking_sphinx/active_record/delta.rb +74 -0
  4. data/lib/thinking_sphinx/active_record/has_many_association.rb +29 -0
  5. data/lib/thinking_sphinx/active_record/search.rb +57 -0
  6. data/lib/thinking_sphinx/active_record.rb +245 -0
  7. data/lib/thinking_sphinx/adapters/abstract_adapter.rb +34 -0
  8. data/lib/thinking_sphinx/adapters/mysql_adapter.rb +53 -0
  9. data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +129 -0
  10. data/lib/thinking_sphinx/association.rb +144 -0
  11. data/lib/thinking_sphinx/attribute.rb +254 -0
  12. data/lib/thinking_sphinx/class_facet.rb +20 -0
  13. data/lib/thinking_sphinx/collection.rb +142 -0
  14. data/lib/thinking_sphinx/configuration.rb +236 -0
  15. data/lib/thinking_sphinx/core/string.rb +22 -0
  16. data/lib/thinking_sphinx/deltas/datetime_delta.rb +50 -0
  17. data/lib/thinking_sphinx/deltas/default_delta.rb +65 -0
  18. data/lib/thinking_sphinx/deltas/delayed_delta/delta_job.rb +24 -0
  19. data/lib/thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job.rb +27 -0
  20. data/lib/thinking_sphinx/deltas/delayed_delta/job.rb +26 -0
  21. data/lib/thinking_sphinx/deltas/delayed_delta.rb +25 -0
  22. data/lib/thinking_sphinx/deltas.rb +22 -0
  23. data/lib/thinking_sphinx/facet.rb +58 -0
  24. data/lib/thinking_sphinx/facet_collection.rb +45 -0
  25. data/lib/thinking_sphinx/field.rb +172 -0
  26. data/lib/thinking_sphinx/index/builder.rb +233 -0
  27. data/lib/thinking_sphinx/index/faux_column.rb +110 -0
  28. data/lib/thinking_sphinx/index.rb +432 -0
  29. data/lib/thinking_sphinx/rails_additions.rb +133 -0
  30. data/lib/thinking_sphinx/search.rb +654 -0
  31. data/lib/thinking_sphinx/tasks.rb +128 -0
  32. data/lib/thinking_sphinx.rb +145 -0
  33. data/spec/unit/thinking_sphinx/active_record/delta_spec.rb +136 -0
  34. data/spec/unit/thinking_sphinx/active_record/has_many_association_spec.rb +53 -0
  35. data/spec/unit/thinking_sphinx/active_record/search_spec.rb +107 -0
  36. data/spec/unit/thinking_sphinx/active_record_spec.rb +256 -0
  37. data/spec/unit/thinking_sphinx/association_spec.rb +247 -0
  38. data/spec/unit/thinking_sphinx/attribute_spec.rb +212 -0
  39. data/spec/unit/thinking_sphinx/collection_spec.rb +14 -0
  40. data/spec/unit/thinking_sphinx/configuration_spec.rb +136 -0
  41. data/spec/unit/thinking_sphinx/core/string_spec.rb +9 -0
  42. data/spec/unit/thinking_sphinx/field_spec.rb +145 -0
  43. data/spec/unit/thinking_sphinx/index/builder_spec.rb +5 -0
  44. data/spec/unit/thinking_sphinx/index/faux_column_spec.rb +30 -0
  45. data/spec/unit/thinking_sphinx/index_spec.rb +54 -0
  46. data/spec/unit/thinking_sphinx/search_spec.rb +59 -0
  47. data/spec/unit/thinking_sphinx_spec.rb +129 -0
  48. data/tasks/distribution.rb +48 -0
  49. data/tasks/rails.rake +1 -0
  50. data/tasks/testing.rb +86 -0
  51. data/vendor/after_commit/LICENSE +20 -0
  52. data/vendor/after_commit/README +16 -0
  53. data/vendor/after_commit/Rakefile +22 -0
  54. data/vendor/after_commit/init.rb +5 -0
  55. data/vendor/after_commit/lib/after_commit/active_record.rb +91 -0
  56. data/vendor/after_commit/lib/after_commit/connection_adapters.rb +103 -0
  57. data/vendor/after_commit/lib/after_commit.rb +42 -0
  58. data/vendor/after_commit/test/after_commit_test.rb +53 -0
  59. data/vendor/delayed_job/lib/delayed/job.rb +251 -0
  60. data/vendor/delayed_job/lib/delayed/message_sending.rb +7 -0
  61. data/vendor/delayed_job/lib/delayed/performable_method.rb +55 -0
  62. data/vendor/delayed_job/lib/delayed/worker.rb +54 -0
  63. data/vendor/riddle/lib/riddle/client/filter.rb +53 -0
  64. data/vendor/riddle/lib/riddle/client/message.rb +65 -0
  65. data/vendor/riddle/lib/riddle/client/response.rb +84 -0
  66. data/vendor/riddle/lib/riddle/client.rb +619 -0
  67. data/vendor/riddle/lib/riddle/configuration/distributed_index.rb +48 -0
  68. data/vendor/riddle/lib/riddle/configuration/index.rb +142 -0
  69. data/vendor/riddle/lib/riddle/configuration/indexer.rb +19 -0
  70. data/vendor/riddle/lib/riddle/configuration/remote_index.rb +17 -0
  71. data/vendor/riddle/lib/riddle/configuration/searchd.rb +25 -0
  72. data/vendor/riddle/lib/riddle/configuration/section.rb +37 -0
  73. data/vendor/riddle/lib/riddle/configuration/source.rb +23 -0
  74. data/vendor/riddle/lib/riddle/configuration/sql_source.rb +34 -0
  75. data/vendor/riddle/lib/riddle/configuration/xml_source.rb +28 -0
  76. data/vendor/riddle/lib/riddle/configuration.rb +33 -0
  77. data/vendor/riddle/lib/riddle/controller.rb +44 -0
  78. data/vendor/riddle/lib/riddle.rb +30 -0
  79. metadata +158 -0
@@ -0,0 +1,142 @@
1
+ module Riddle
2
+ class Configuration
3
+ class Index < Riddle::Configuration::Section
4
+ self.settings = [:source, :path, :docinfo, :mlock, :morphology,
5
+ :stopwords, :wordforms, :exceptions, :min_word_len, :charset_type,
6
+ :charset_table, :ignore_chars, :min_prefix_len, :min_infix_len,
7
+ :prefix_fields, :infix_fields, :enable_star, :ngram_len, :ngram_chars,
8
+ :phrase_boundary, :phrase_boundary_step, :html_strip,
9
+ :html_index_attrs, :html_remove_elements, :preopen]
10
+
11
+ attr_accessor :name, :parent, :sources, :path, :docinfo, :mlock,
12
+ :morphologies, :stopword_files, :wordform_files, :exception_files,
13
+ :min_word_len, :charset_type, :charset_table, :ignore_characters,
14
+ :min_prefix_len, :min_infix_len, :prefix_field_names,
15
+ :infix_field_names, :enable_star, :ngram_len, :ngram_characters,
16
+ :phrase_boundaries, :phrase_boundary_step, :html_strip,
17
+ :html_index_attrs, :html_remove_element_tags, :preopen
18
+
19
+ def initialize(name, *sources)
20
+ @name = name
21
+ @sources = sources
22
+ @morphologies = []
23
+ @stopword_files = []
24
+ @wordform_files = []
25
+ @exception_files = []
26
+ @ignore_characters = []
27
+ @prefix_field_names = []
28
+ @infix_field_names = []
29
+ @ngram_characters = []
30
+ @phrase_boundaries = []
31
+ @html_remove_element_tags = []
32
+ end
33
+
34
+ def source
35
+ @sources.collect { |s| s.name }
36
+ end
37
+
38
+ def morphology
39
+ nil_join @morphologies, ", "
40
+ end
41
+
42
+ def morphology=(morphology)
43
+ @morphologies = nil_split morphology, /,\s?/
44
+ end
45
+
46
+ def stopwords
47
+ nil_join @stopword_files, " "
48
+ end
49
+
50
+ def stopwords=(stopwords)
51
+ @stopword_files = nil_split stopwords, ' '
52
+ end
53
+
54
+ def wordforms
55
+ nil_join @wordform_files, " "
56
+ end
57
+
58
+ def wordforms=(wordforms)
59
+ @wordform_files = nil_split wordforms, ' '
60
+ end
61
+
62
+ def exceptions
63
+ nil_join @exception_files, " "
64
+ end
65
+
66
+ def exceptions=(exceptions)
67
+ @exception_files = nil_split exceptions, ' '
68
+ end
69
+
70
+ def ignore_chars
71
+ nil_join @ignore_characters, ", "
72
+ end
73
+
74
+ def ignore_chars=(ignore_chars)
75
+ @ignore_characters = nil_split ignore_chars, /,\s?/
76
+ end
77
+
78
+ def prefix_fields
79
+ nil_join @prefix_field_names, ", "
80
+ end
81
+
82
+ def infix_fields
83
+ nil_join @infix_field_names, ", "
84
+ end
85
+
86
+ def ngram_chars
87
+ nil_join @ngram_characters, ", "
88
+ end
89
+
90
+ def ngram_chars=(ngram_chars)
91
+ @ngram_characters = nil_split ngram_chars, /,\s?/
92
+ end
93
+
94
+ def phrase_boundary
95
+ nil_join @phrase_boundaries, ", "
96
+ end
97
+
98
+ def phrase_boundary=(phrase_boundary)
99
+ @phrase_boundaries = nil_split phrase_boundary, /,\s?/
100
+ end
101
+
102
+ def html_remove_elements
103
+ nil_join @html_remove_element_tags, ", "
104
+ end
105
+
106
+ def html_remove_elements=(html_remove_elements)
107
+ @html_remove_element_tags = nil_split html_remove_elements, /,\s?/
108
+ end
109
+
110
+ def render
111
+ raise ConfigurationError, "#{@name} #{@sources.inspect} #{@path} #{@parent}" unless valid?
112
+
113
+ inherited_name = "#{name}"
114
+ inherited_name << " : #{parent}" if parent
115
+ (
116
+ @sources.collect { |s| s.render } +
117
+ ["index #{inherited_name}", "{"] +
118
+ settings_body +
119
+ ["}", ""]
120
+ ).join("\n")
121
+ end
122
+
123
+ def valid?
124
+ (!@name.nil?) && (!( @sources.length == 0 || @path.nil? ) || !@parent.nil?)
125
+ end
126
+
127
+ private
128
+
129
+ def nil_split(string, pattern)
130
+ (string || "").split(pattern)
131
+ end
132
+
133
+ def nil_join(array, delimiter)
134
+ if array.length == 0
135
+ nil
136
+ else
137
+ array.join(delimiter)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,19 @@
1
+ module Riddle
2
+ class Configuration
3
+ class Indexer < Riddle::Configuration::Section
4
+ self.settings = [:mem_limit, :max_iops, :max_iosize]
5
+
6
+ attr_accessor *self.settings
7
+
8
+ def render
9
+ raise ConfigurationError unless valid?
10
+
11
+ (
12
+ ["indexer", "{"] +
13
+ settings_body +
14
+ ["}", ""]
15
+ ).join("\n")
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module Riddle
2
+ class Configuration
3
+ class RemoteIndex
4
+ attr_accessor :address, :port, :name
5
+
6
+ def initialize(address, port, name)
7
+ @address = address
8
+ @port = port
9
+ @name = name
10
+ end
11
+
12
+ def remote
13
+ "#{address}:#{port}"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ module Riddle
2
+ class Configuration
3
+ class Searchd < Riddle::Configuration::Section
4
+ self.settings = [:address, :port, :log, :query_log, :read_timeout,
5
+ :max_children, :pid_file, :max_matches, :seamless_rotate,
6
+ :preopen_indexes, :unlink_old]
7
+
8
+ attr_accessor *self.settings
9
+
10
+ def render
11
+ raise ConfigurationError unless valid?
12
+
13
+ (
14
+ ["searchd", "{"] +
15
+ settings_body +
16
+ ["}", ""]
17
+ ).join("\n")
18
+ end
19
+
20
+ def valid?
21
+ !( @port.nil? || @pid_file.nil? )
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,37 @@
1
+ module Riddle
2
+ class Configuration
3
+ class Section
4
+ class << self
5
+ attr_accessor :settings
6
+ end
7
+
8
+ settings = []
9
+
10
+ def valid?
11
+ true
12
+ end
13
+
14
+ private
15
+
16
+ def settings_body
17
+ self.class.settings.select { |setting|
18
+ !send(setting).nil?
19
+ }.collect { |setting|
20
+ if send(setting) == ""
21
+ conf = " #{setting} = "
22
+ else
23
+ conf = setting_to_array(setting).collect { |set|
24
+ " #{setting} = #{set}"
25
+ }
26
+ end
27
+ conf.length == 0 ? nil : conf
28
+ }.flatten.compact
29
+ end
30
+
31
+ def setting_to_array(setting)
32
+ value = send(setting)
33
+ value.is_a?(Array) ? value : [value]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ module Riddle
2
+ class Configuration
3
+ class Source < Riddle::Configuration::Section
4
+ attr_accessor :name, :parent, :type
5
+
6
+ def render
7
+ raise ConfigurationError unless valid?
8
+
9
+ inherited_name = "#{name}"
10
+ inherited_name << " : #{parent}" if parent
11
+ (
12
+ ["source #{inherited_name}", "{"] +
13
+ settings_body +
14
+ ["}", ""]
15
+ ).join("\n")
16
+ end
17
+
18
+ def valid?
19
+ !( @name.nil? || @type.nil? )
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ module Riddle
2
+ class Configuration
3
+ class SQLSource < Riddle::Configuration::Source
4
+ self.settings = [:type, :sql_host, :sql_user, :sql_pass, :sql_db,
5
+ :sql_port, :sql_sock, :mysql_connect_flags, :sql_query_pre, :sql_query,
6
+ :sql_query_range, :sql_range_step, :sql_attr_uint, :sql_attr_bool,
7
+ :sql_attr_timestamp, :sql_attr_str2ordinal, :sql_attr_float,
8
+ :sql_attr_multi, :sql_query_post, :sql_query_post_index,
9
+ :sql_ranged_throttle, :sql_query_info]
10
+
11
+ attr_accessor *self.settings
12
+
13
+ def initialize(name, type)
14
+ @name = name
15
+ @type = type
16
+
17
+ @sql_query_pre = []
18
+ @sql_attr_uint = []
19
+ @sql_attr_bool = []
20
+ @sql_attr_timestamp = []
21
+ @sql_attr_str2ordinal = []
22
+ @sql_attr_float = []
23
+ @sql_attr_multi = []
24
+ @sql_query_post = []
25
+ @sql_query_post_index = []
26
+ end
27
+
28
+ def valid?
29
+ super && (!( @sql_host.nil? || @sql_user.nil? || @sql_db.nil? ||
30
+ @sql_query.nil? ) || !@parent.nil?)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,28 @@
1
+ module Riddle
2
+ class Configuration
3
+ class XMLSource < Riddle::Configuration::Source
4
+ self.settings = [:type, :xmlpipe_command, :xmlpipe_field,
5
+ :xmlpipe_attr_uint, :xmlpipe_attr_bool, :xmlpipe_attr_timestamp,
6
+ :xmlpipe_attr_str2ordinal, :xmlpipe_attr_float, :xmlpipe_attr_multi]
7
+
8
+ attr_accessor *self.settings
9
+
10
+ def initialize(name, type)
11
+ @name = name
12
+ @type = type
13
+
14
+ @xmlpipe_field = []
15
+ @xmlpipe_attr_uint = []
16
+ @xmlpipe_attr_bool = []
17
+ @xmlpipe_attr_timestamp = []
18
+ @xmlpipe_attr_str2ordinal = []
19
+ @xmlpipe_attr_float = []
20
+ @xmlpipe_attr_multi = []
21
+ end
22
+
23
+ def valid?
24
+ super && ( !@xmlpipe_command.nil? || !parent.nil? )
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ require 'riddle/configuration/section'
2
+
3
+ require 'riddle/configuration/distributed_index'
4
+ require 'riddle/configuration/index'
5
+ require 'riddle/configuration/indexer'
6
+ require 'riddle/configuration/remote_index'
7
+ require 'riddle/configuration/searchd'
8
+ require 'riddle/configuration/source'
9
+ require 'riddle/configuration/sql_source'
10
+ require 'riddle/configuration/xml_source'
11
+
12
+ module Riddle
13
+ class Configuration
14
+ class ConfigurationError < StandardError #:nodoc:
15
+ end
16
+
17
+ attr_reader :indexes, :searchd
18
+ attr_accessor :indexer
19
+
20
+ def initialize
21
+ @indexer = Riddle::Configuration::Indexer.new
22
+ @searchd = Riddle::Configuration::Searchd.new
23
+ @indexes = []
24
+ end
25
+
26
+ def render
27
+ (
28
+ [@indexer.render, @searchd.render] +
29
+ @indexes.collect { |index| index.render }
30
+ ).join("\n")
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ module Riddle
2
+ class Controller
3
+ def initialize(configuration, path)
4
+ @configuration = configuration
5
+ @path = path
6
+ end
7
+
8
+ def index
9
+ cmd = "indexer --config #{@path} --all"
10
+ cmd << " --rotate" if running?
11
+ `#{cmd}`
12
+ end
13
+
14
+ def start
15
+ return if running?
16
+
17
+ cmd = "searchd --pidfile --config #{@path}"
18
+ `#{cmd}`
19
+
20
+ sleep(1)
21
+
22
+ unless running?
23
+ puts "Failed to start searchd daemon. Check #{@configuration.searchd.log}."
24
+ end
25
+ end
26
+
27
+ def stop
28
+ return unless running?
29
+ `kill #{pid}`
30
+ end
31
+
32
+ def pid
33
+ if File.exists?("#{@configuration.searchd.pid_file}")
34
+ `cat #{@configuration.searchd.pid_file}`[/\d+/]
35
+ else
36
+ nil
37
+ end
38
+ end
39
+
40
+ def running?
41
+ pid && `ps #{pid} | wc -l`.to_i > 1
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ require 'socket'
2
+ require 'timeout'
3
+
4
+ require 'riddle/client'
5
+ require 'riddle/configuration'
6
+ require 'riddle/controller'
7
+
8
+ module Riddle #:nodoc:
9
+ class ConnectionError < StandardError #:nodoc:
10
+ end
11
+
12
+ module Version #:nodoc:
13
+ Major = 0
14
+ Minor = 9
15
+ Tiny = 8
16
+ # Revision number for RubyForge's sake, taken from what Sphinx
17
+ # outputs to the command line.
18
+ Rev = 1533
19
+ # Release number to mark my own fixes, beyond feature parity with
20
+ # Sphinx itself.
21
+ Release = 4
22
+
23
+ String = [Major, Minor, Tiny].join('.')
24
+ GemVersion = [Major, Minor, Tiny, Rev, Release].join('.')
25
+ end
26
+
27
+ def self.escape(string)
28
+ string.gsub(/[\(\)\|\-!@~"&\/]/) { |char| "\\#{char}" }
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dpickett-thinking-sphinx
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Pat Allan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-19 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
17
+ email: pat@freelancing-gods.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/thinking_sphinx/active_record/delta.rb
26
+ - lib/thinking_sphinx/active_record/has_many_association.rb
27
+ - lib/thinking_sphinx/active_record/search.rb
28
+ - lib/thinking_sphinx/active_record.rb
29
+ - lib/thinking_sphinx/adapters/abstract_adapter.rb
30
+ - lib/thinking_sphinx/adapters/mysql_adapter.rb
31
+ - lib/thinking_sphinx/adapters/postgresql_adapter.rb
32
+ - lib/thinking_sphinx/association.rb
33
+ - lib/thinking_sphinx/attribute.rb
34
+ - lib/thinking_sphinx/class_facet.rb
35
+ - lib/thinking_sphinx/collection.rb
36
+ - lib/thinking_sphinx/configuration.rb
37
+ - lib/thinking_sphinx/core/string.rb
38
+ - lib/thinking_sphinx/deltas/datetime_delta.rb
39
+ - lib/thinking_sphinx/deltas/default_delta.rb
40
+ - lib/thinking_sphinx/deltas/delayed_delta/delta_job.rb
41
+ - lib/thinking_sphinx/deltas/delayed_delta/flag_as_deleted_job.rb
42
+ - lib/thinking_sphinx/deltas/delayed_delta/job.rb
43
+ - lib/thinking_sphinx/deltas/delayed_delta.rb
44
+ - lib/thinking_sphinx/deltas.rb
45
+ - lib/thinking_sphinx/facet.rb
46
+ - lib/thinking_sphinx/facet_collection.rb
47
+ - lib/thinking_sphinx/field.rb
48
+ - lib/thinking_sphinx/index/builder.rb
49
+ - lib/thinking_sphinx/index/faux_column.rb
50
+ - lib/thinking_sphinx/index.rb
51
+ - lib/thinking_sphinx/rails_additions.rb
52
+ - lib/thinking_sphinx/search.rb
53
+ - lib/thinking_sphinx/tasks.rb
54
+ - lib/thinking_sphinx.rb
55
+ - LICENCE
56
+ - README
57
+ - tasks/distribution.rb
58
+ - tasks/testing.rb
59
+ - tasks/rails.rake
60
+ - vendor/after_commit
61
+ - vendor/after_commit/init.rb
62
+ - vendor/after_commit/lib
63
+ - vendor/after_commit/lib/after_commit
64
+ - vendor/after_commit/lib/after_commit/active_record.rb
65
+ - vendor/after_commit/lib/after_commit/connection_adapters.rb
66
+ - vendor/after_commit/lib/after_commit.rb
67
+ - vendor/after_commit/LICENSE
68
+ - vendor/after_commit/Rakefile
69
+ - vendor/after_commit/README
70
+ - vendor/after_commit/test
71
+ - vendor/after_commit/test/after_commit_test.rb
72
+ - vendor/delayed_job
73
+ - vendor/delayed_job/lib
74
+ - vendor/delayed_job/lib/delayed
75
+ - vendor/delayed_job/lib/delayed/job.rb
76
+ - vendor/delayed_job/lib/delayed/message_sending.rb
77
+ - vendor/delayed_job/lib/delayed/performable_method.rb
78
+ - vendor/delayed_job/lib/delayed/worker.rb
79
+ - vendor/riddle
80
+ - vendor/riddle/lib
81
+ - vendor/riddle/lib/riddle
82
+ - vendor/riddle/lib/riddle/client
83
+ - vendor/riddle/lib/riddle/client/filter.rb
84
+ - vendor/riddle/lib/riddle/client/message.rb
85
+ - vendor/riddle/lib/riddle/client/response.rb
86
+ - vendor/riddle/lib/riddle/client.rb
87
+ - vendor/riddle/lib/riddle/configuration
88
+ - vendor/riddle/lib/riddle/configuration/distributed_index.rb
89
+ - vendor/riddle/lib/riddle/configuration/index.rb
90
+ - vendor/riddle/lib/riddle/configuration/indexer.rb
91
+ - vendor/riddle/lib/riddle/configuration/remote_index.rb
92
+ - vendor/riddle/lib/riddle/configuration/searchd.rb
93
+ - vendor/riddle/lib/riddle/configuration/section.rb
94
+ - vendor/riddle/lib/riddle/configuration/source.rb
95
+ - vendor/riddle/lib/riddle/configuration/sql_source.rb
96
+ - vendor/riddle/lib/riddle/configuration/xml_source.rb
97
+ - vendor/riddle/lib/riddle/configuration.rb
98
+ - vendor/riddle/lib/riddle/controller.rb
99
+ - vendor/riddle/lib/riddle.rb
100
+ - spec/unit/thinking_sphinx/active_record/delta_spec.rb
101
+ - spec/unit/thinking_sphinx/active_record/has_many_association_spec.rb
102
+ - spec/unit/thinking_sphinx/active_record/search_spec.rb
103
+ - spec/unit/thinking_sphinx/active_record_spec.rb
104
+ - spec/unit/thinking_sphinx/association_spec.rb
105
+ - spec/unit/thinking_sphinx/attribute_spec.rb
106
+ - spec/unit/thinking_sphinx/collection_spec.rb
107
+ - spec/unit/thinking_sphinx/configuration_spec.rb
108
+ - spec/unit/thinking_sphinx/core/string_spec.rb
109
+ - spec/unit/thinking_sphinx/field_spec.rb
110
+ - spec/unit/thinking_sphinx/index/builder_spec.rb
111
+ - spec/unit/thinking_sphinx/index/faux_column_spec.rb
112
+ - spec/unit/thinking_sphinx/index_spec.rb
113
+ - spec/unit/thinking_sphinx/search_spec.rb
114
+ - spec/unit/thinking_sphinx_spec.rb
115
+ has_rdoc: true
116
+ homepage: http://ts.freelancing-gods.com
117
+ post_install_message:
118
+ rdoc_options:
119
+ - --title
120
+ - Thinking Sphinx -- Rails/Merb Sphinx Plugin
121
+ - --line-numbers
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: "0"
129
+ version:
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: "0"
135
+ version:
136
+ requirements: []
137
+
138
+ rubyforge_project: thinking-sphinx
139
+ rubygems_version: 1.2.0
140
+ signing_key:
141
+ specification_version: 2
142
+ summary: A concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration, indexing and searching.
143
+ test_files:
144
+ - spec/unit/thinking_sphinx/active_record/delta_spec.rb
145
+ - spec/unit/thinking_sphinx/active_record/has_many_association_spec.rb
146
+ - spec/unit/thinking_sphinx/active_record/search_spec.rb
147
+ - spec/unit/thinking_sphinx/active_record_spec.rb
148
+ - spec/unit/thinking_sphinx/association_spec.rb
149
+ - spec/unit/thinking_sphinx/attribute_spec.rb
150
+ - spec/unit/thinking_sphinx/collection_spec.rb
151
+ - spec/unit/thinking_sphinx/configuration_spec.rb
152
+ - spec/unit/thinking_sphinx/core/string_spec.rb
153
+ - spec/unit/thinking_sphinx/field_spec.rb
154
+ - spec/unit/thinking_sphinx/index/builder_spec.rb
155
+ - spec/unit/thinking_sphinx/index/faux_column_spec.rb
156
+ - spec/unit/thinking_sphinx/index_spec.rb
157
+ - spec/unit/thinking_sphinx/search_spec.rb
158
+ - spec/unit/thinking_sphinx_spec.rb