thinking-sphinx 2.1.0 → 3.0.0.pre

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 (352) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +13 -0
  3. data/Appraisals +7 -0
  4. data/Gemfile +10 -0
  5. data/HISTORY +2 -267
  6. data/LICENCE +1 -1
  7. data/README.textile +194 -226
  8. data/Rakefile +24 -0
  9. data/gemfiles/.gitignore +1 -0
  10. data/gemfiles/rails_3_1.gemfile +11 -0
  11. data/gemfiles/rails_3_2.gemfile +11 -0
  12. data/lib/thinking-sphinx.rb +1 -1
  13. data/lib/thinking_sphinx.rb +34 -292
  14. data/lib/thinking_sphinx/active_record.rb +22 -383
  15. data/lib/thinking_sphinx/active_record/association.rb +9 -0
  16. data/lib/thinking_sphinx/active_record/association_proxy.rb +68 -0
  17. data/lib/thinking_sphinx/active_record/associations.rb +68 -0
  18. data/lib/thinking_sphinx/active_record/attribute.rb +20 -0
  19. data/lib/thinking_sphinx/active_record/attribute/sphinx_presenter.rb +32 -0
  20. data/lib/thinking_sphinx/active_record/attribute/type.rb +79 -0
  21. data/lib/thinking_sphinx/active_record/attribute/values.rb +18 -0
  22. data/lib/thinking_sphinx/active_record/base.rb +36 -0
  23. data/lib/thinking_sphinx/active_record/callbacks/delete_callbacks.rb +31 -0
  24. data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +55 -0
  25. data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +59 -0
  26. data/lib/thinking_sphinx/active_record/column.rb +30 -0
  27. data/lib/thinking_sphinx/active_record/database_adapters.rb +51 -0
  28. data/lib/thinking_sphinx/active_record/database_adapters/abstract_adapter.rb +13 -0
  29. data/lib/thinking_sphinx/active_record/database_adapters/mysql_adapter.rb +23 -0
  30. data/lib/thinking_sphinx/active_record/database_adapters/postgresql_adapter.rb +25 -0
  31. data/lib/thinking_sphinx/active_record/field.rb +11 -0
  32. data/lib/thinking_sphinx/active_record/index.rb +55 -0
  33. data/lib/thinking_sphinx/active_record/interpreter.rb +47 -0
  34. data/lib/thinking_sphinx/active_record/log_subscriber.rb +10 -58
  35. data/lib/thinking_sphinx/active_record/property.rb +28 -0
  36. data/lib/thinking_sphinx/active_record/property_sql_presenter.rb +60 -0
  37. data/lib/thinking_sphinx/active_record/sql_builder.rb +159 -0
  38. data/lib/thinking_sphinx/active_record/sql_source.rb +138 -0
  39. data/lib/thinking_sphinx/active_record/sql_source/template.rb +46 -0
  40. data/lib/thinking_sphinx/batched_search.rb +26 -0
  41. data/lib/thinking_sphinx/callbacks.rb +15 -0
  42. data/lib/thinking_sphinx/configuration.rb +80 -331
  43. data/lib/thinking_sphinx/configuration/consistent_ids.rb +31 -0
  44. data/lib/thinking_sphinx/configuration/defaults.rb +5 -0
  45. data/lib/thinking_sphinx/core.rb +6 -0
  46. data/lib/thinking_sphinx/core/index.rb +68 -0
  47. data/lib/thinking_sphinx/core/interpreter.rb +19 -0
  48. data/lib/thinking_sphinx/deltas.rb +35 -26
  49. data/lib/thinking_sphinx/deltas/default_delta.rb +56 -56
  50. data/lib/thinking_sphinx/excerpter.rb +23 -21
  51. data/lib/thinking_sphinx/facet.rb +22 -127
  52. data/lib/thinking_sphinx/facet_search.rb +95 -162
  53. data/lib/thinking_sphinx/index.rb +39 -143
  54. data/lib/thinking_sphinx/index_set.rb +51 -0
  55. data/lib/thinking_sphinx/masks.rb +8 -0
  56. data/lib/thinking_sphinx/masks/group_enumerators_mask.rb +23 -0
  57. data/lib/thinking_sphinx/masks/pagination_mask.rb +60 -0
  58. data/lib/thinking_sphinx/masks/scopes_mask.rb +35 -0
  59. data/lib/thinking_sphinx/masks/weight_enumerator_mask.rb +11 -0
  60. data/lib/thinking_sphinx/middlewares.rb +36 -0
  61. data/lib/thinking_sphinx/middlewares/active_record_translator.rb +73 -0
  62. data/lib/thinking_sphinx/middlewares/geographer.rb +53 -0
  63. data/lib/thinking_sphinx/middlewares/glazier.rb +39 -0
  64. data/lib/thinking_sphinx/middlewares/ids_only.rb +13 -0
  65. data/lib/thinking_sphinx/middlewares/inquirer.rb +62 -0
  66. data/lib/thinking_sphinx/middlewares/middleware.rb +9 -0
  67. data/lib/thinking_sphinx/middlewares/sphinxql.rb +149 -0
  68. data/lib/thinking_sphinx/middlewares/stale_id_checker.rb +45 -0
  69. data/lib/thinking_sphinx/middlewares/stale_id_filter.rb +46 -0
  70. data/lib/thinking_sphinx/panes.rb +8 -0
  71. data/lib/thinking_sphinx/panes/attributes_pane.rb +9 -0
  72. data/lib/thinking_sphinx/panes/distance_pane.rb +13 -0
  73. data/lib/thinking_sphinx/panes/excerpts_pane.rb +37 -0
  74. data/lib/thinking_sphinx/panes/weight_pane.rb +9 -0
  75. data/lib/thinking_sphinx/railtie.rb +6 -40
  76. data/lib/thinking_sphinx/rake_interface.rb +47 -0
  77. data/lib/thinking_sphinx/real_time.rb +11 -0
  78. data/lib/thinking_sphinx/real_time/attribute.rb +5 -0
  79. data/lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb +48 -0
  80. data/lib/thinking_sphinx/real_time/field.rb +3 -0
  81. data/lib/thinking_sphinx/real_time/index.rb +47 -0
  82. data/lib/thinking_sphinx/real_time/index/template.rb +33 -0
  83. data/lib/thinking_sphinx/real_time/interpreter.rb +23 -0
  84. data/lib/thinking_sphinx/real_time/property.rb +16 -0
  85. data/lib/thinking_sphinx/scopes.rb +22 -0
  86. data/lib/thinking_sphinx/search.rb +90 -1028
  87. data/lib/thinking_sphinx/search/batch_inquirer.rb +27 -0
  88. data/lib/thinking_sphinx/search/context.rb +26 -0
  89. data/lib/thinking_sphinx/search/glaze.rb +32 -0
  90. data/lib/thinking_sphinx/search/merger.rb +24 -0
  91. data/lib/thinking_sphinx/search/query.rb +43 -0
  92. data/lib/thinking_sphinx/search/stale_ids_exception.rb +11 -0
  93. data/lib/thinking_sphinx/search/translator.rb +50 -0
  94. data/lib/thinking_sphinx/tasks.rb +22 -125
  95. data/lib/thinking_sphinx/test.rb +9 -19
  96. data/sketchpad.rb +58 -0
  97. data/spec/acceptance/association_scoping_spec.rb +23 -0
  98. data/spec/acceptance/attribute_access_spec.rb +39 -0
  99. data/spec/acceptance/attribute_updates_spec.rb +16 -0
  100. data/spec/acceptance/batch_searching_spec.rb +21 -0
  101. data/spec/acceptance/big_integers_spec.rb +27 -0
  102. data/spec/acceptance/excerpts_spec.rb +14 -0
  103. data/spec/acceptance/facets_spec.rb +122 -0
  104. data/spec/acceptance/geosearching_spec.rb +39 -0
  105. data/spec/acceptance/grouping_by_attributes_spec.rb +77 -0
  106. data/spec/acceptance/paginating_search_results_spec.rb +24 -0
  107. data/spec/acceptance/remove_deleted_records_spec.rb +23 -0
  108. data/spec/acceptance/search_counts_spec.rb +18 -0
  109. data/spec/acceptance/search_for_just_ids_spec.rb +19 -0
  110. data/spec/acceptance/searching_across_models_spec.rb +28 -0
  111. data/spec/acceptance/searching_on_fields_spec.rb +56 -0
  112. data/spec/acceptance/searching_with_filters_spec.rb +109 -0
  113. data/spec/acceptance/searching_with_sti_spec.rb +55 -0
  114. data/spec/acceptance/searching_within_a_model_spec.rb +52 -0
  115. data/spec/acceptance/sorting_search_results_spec.rb +41 -0
  116. data/spec/acceptance/spec_helper.rb +4 -0
  117. data/spec/acceptance/specifying_sql_spec.rb +62 -0
  118. data/spec/acceptance/sphinx_scopes_spec.rb +49 -0
  119. data/spec/acceptance/sql_deltas_spec.rb +43 -0
  120. data/spec/acceptance/support/database_cleaner.rb +11 -0
  121. data/spec/acceptance/support/sphinx_controller.rb +39 -0
  122. data/spec/acceptance/support/sphinx_helpers.rb +24 -0
  123. data/spec/acceptance/suspended_deltas_spec.rb +20 -0
  124. data/spec/internal/.gitignore +1 -0
  125. data/spec/internal/app/indices/animal_index.rb +3 -0
  126. data/spec/internal/app/indices/article_index.rb +24 -0
  127. data/spec/internal/app/indices/book_index.rb +8 -0
  128. data/spec/internal/app/indices/city_index.rb +6 -0
  129. data/spec/internal/app/indices/product_index.rb +3 -0
  130. data/spec/internal/app/indices/tee_index.rb +4 -0
  131. data/spec/internal/app/indices/user_index.rb +5 -0
  132. data/spec/internal/app/models/animal.rb +2 -0
  133. data/spec/internal/app/models/article.rb +5 -0
  134. data/spec/internal/app/models/bird.rb +2 -0
  135. data/spec/internal/app/models/book.rb +11 -0
  136. data/spec/internal/app/models/city.rb +2 -0
  137. data/spec/internal/app/models/colour.rb +3 -0
  138. data/spec/internal/app/models/flightless_bird.rb +2 -0
  139. data/spec/internal/app/models/mammal.rb +2 -0
  140. data/spec/internal/app/models/product.rb +3 -0
  141. data/spec/internal/app/models/tag.rb +4 -0
  142. data/{features/thinking_sphinx → spec/internal/app}/models/tagging.rb +1 -1
  143. data/spec/internal/app/models/tee.rb +3 -0
  144. data/spec/internal/app/models/tweet.rb +3 -0
  145. data/spec/internal/app/models/user.rb +3 -0
  146. data/spec/internal/config/database.yml +5 -0
  147. data/spec/internal/db/schema.rb +65 -0
  148. data/spec/internal/log/.gitignore +1 -0
  149. data/spec/spec_helper.rb +8 -49
  150. data/spec/support/sphinx_yaml_helpers.rb +9 -0
  151. data/spec/thinking_sphinx/active_record/association_spec.rb +12 -0
  152. data/spec/thinking_sphinx/active_record/associations_spec.rb +184 -0
  153. data/spec/thinking_sphinx/active_record/attribute/type_spec.rb +147 -0
  154. data/spec/thinking_sphinx/active_record/base_spec.rb +61 -0
  155. data/spec/thinking_sphinx/active_record/callbacks/delete_callbacks_spec.rb +80 -0
  156. data/spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb +147 -0
  157. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +69 -0
  158. data/spec/thinking_sphinx/active_record/column_spec.rb +47 -0
  159. data/spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb +31 -0
  160. data/spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb +43 -0
  161. data/spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb +45 -0
  162. data/spec/thinking_sphinx/active_record/database_adapters_spec.rb +108 -0
  163. data/spec/thinking_sphinx/active_record/field_spec.rb +36 -0
  164. data/spec/thinking_sphinx/active_record/index_spec.rb +208 -0
  165. data/spec/thinking_sphinx/active_record/interpreter_spec.rb +293 -0
  166. data/spec/thinking_sphinx/active_record/property_sql_presenter_spec.rb +162 -0
  167. data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +666 -0
  168. data/spec/thinking_sphinx/active_record/sql_source_spec.rb +401 -0
  169. data/spec/thinking_sphinx/configuration_spec.rb +264 -171
  170. data/spec/thinking_sphinx/deltas/default_delta_spec.rb +116 -0
  171. data/spec/thinking_sphinx/deltas_spec.rb +58 -0
  172. data/spec/thinking_sphinx/excerpter_spec.rb +40 -38
  173. data/spec/thinking_sphinx/facet_search_spec.rb +49 -151
  174. data/spec/thinking_sphinx/index_set_spec.rb +68 -0
  175. data/spec/thinking_sphinx/index_spec.rb +91 -155
  176. data/spec/thinking_sphinx/masks/pagination_mask_spec.rb +121 -0
  177. data/spec/thinking_sphinx/masks/scopes_mask_spec.rb +68 -0
  178. data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +132 -0
  179. data/spec/thinking_sphinx/middlewares/geographer_spec.rb +89 -0
  180. data/spec/thinking_sphinx/middlewares/glazier_spec.rb +62 -0
  181. data/spec/thinking_sphinx/middlewares/inquirer_spec.rb +55 -0
  182. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +271 -0
  183. data/spec/thinking_sphinx/middlewares/stale_id_checker_spec.rb +47 -0
  184. data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +91 -0
  185. data/spec/thinking_sphinx/panes/attributes_pane_spec.rb +21 -0
  186. data/spec/thinking_sphinx/panes/distance_pane_spec.rb +41 -0
  187. data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +53 -0
  188. data/spec/thinking_sphinx/panes/weight_pane_spec.rb +20 -0
  189. data/spec/thinking_sphinx/rake_interface_spec.rb +147 -0
  190. data/spec/thinking_sphinx/real_time/attribute_spec.rb +62 -0
  191. data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +76 -0
  192. data/spec/thinking_sphinx/real_time/field_spec.rb +54 -0
  193. data/spec/thinking_sphinx/real_time/index_spec.rb +154 -0
  194. data/spec/thinking_sphinx/real_time/interpreter_spec.rb +147 -0
  195. data/spec/thinking_sphinx/scopes_spec.rb +38 -0
  196. data/spec/thinking_sphinx/search/glaze_spec.rb +55 -0
  197. data/spec/thinking_sphinx/search/query_spec.rb +46 -0
  198. data/spec/thinking_sphinx/search_spec.rb +65 -1357
  199. data/spec/thinking_sphinx_spec.rb +19 -182
  200. data/thinking-sphinx.gemspec +33 -0
  201. metadata +318 -431
  202. data/features/abstract_inheritance.feature +0 -10
  203. data/features/alternate_primary_key.feature +0 -27
  204. data/features/attribute_transformation.feature +0 -22
  205. data/features/attribute_updates.feature +0 -79
  206. data/features/deleting_instances.feature +0 -70
  207. data/features/direct_attributes.feature +0 -11
  208. data/features/excerpts.feature +0 -21
  209. data/features/extensible_delta_indexing.feature +0 -9
  210. data/features/facets.feature +0 -88
  211. data/features/facets_across_model.feature +0 -29
  212. data/features/field_sorting.feature +0 -18
  213. data/features/handling_edits.feature +0 -97
  214. data/features/retry_stale_indexes.feature +0 -24
  215. data/features/searching_across_models.feature +0 -20
  216. data/features/searching_by_index.feature +0 -41
  217. data/features/searching_by_model.feature +0 -175
  218. data/features/searching_with_find_arguments.feature +0 -56
  219. data/features/sphinx_detection.feature +0 -25
  220. data/features/sphinx_scopes.feature +0 -68
  221. data/features/step_definitions/alpha_steps.rb +0 -16
  222. data/features/step_definitions/beta_steps.rb +0 -7
  223. data/features/step_definitions/common_steps.rb +0 -205
  224. data/features/step_definitions/extensible_delta_indexing_steps.rb +0 -7
  225. data/features/step_definitions/facet_steps.rb +0 -96
  226. data/features/step_definitions/find_arguments_steps.rb +0 -36
  227. data/features/step_definitions/gamma_steps.rb +0 -15
  228. data/features/step_definitions/scope_steps.rb +0 -19
  229. data/features/step_definitions/search_steps.rb +0 -94
  230. data/features/step_definitions/sphinx_steps.rb +0 -35
  231. data/features/sti_searching.feature +0 -19
  232. data/features/support/env.rb +0 -24
  233. data/features/support/lib/generic_delta_handler.rb +0 -8
  234. data/features/thinking_sphinx/database.example.yml +0 -3
  235. data/features/thinking_sphinx/db/.gitignore +0 -1
  236. data/features/thinking_sphinx/db/fixtures/alphas.rb +0 -8
  237. data/features/thinking_sphinx/db/fixtures/authors.rb +0 -1
  238. data/features/thinking_sphinx/db/fixtures/betas.rb +0 -11
  239. data/features/thinking_sphinx/db/fixtures/boxes.rb +0 -9
  240. data/features/thinking_sphinx/db/fixtures/categories.rb +0 -1
  241. data/features/thinking_sphinx/db/fixtures/cats.rb +0 -3
  242. data/features/thinking_sphinx/db/fixtures/comments.rb +0 -24
  243. data/features/thinking_sphinx/db/fixtures/developers.rb +0 -31
  244. data/features/thinking_sphinx/db/fixtures/dogs.rb +0 -3
  245. data/features/thinking_sphinx/db/fixtures/extensible_betas.rb +0 -10
  246. data/features/thinking_sphinx/db/fixtures/foxes.rb +0 -3
  247. data/features/thinking_sphinx/db/fixtures/gammas.rb +0 -10
  248. data/features/thinking_sphinx/db/fixtures/music.rb +0 -4
  249. data/features/thinking_sphinx/db/fixtures/people.rb +0 -1001
  250. data/features/thinking_sphinx/db/fixtures/post_keywords.txt +0 -1
  251. data/features/thinking_sphinx/db/fixtures/posts.rb +0 -10
  252. data/features/thinking_sphinx/db/fixtures/robots.rb +0 -8
  253. data/features/thinking_sphinx/db/fixtures/tags.rb +0 -27
  254. data/features/thinking_sphinx/db/migrations/create_alphas.rb +0 -8
  255. data/features/thinking_sphinx/db/migrations/create_animals.rb +0 -5
  256. data/features/thinking_sphinx/db/migrations/create_authors.rb +0 -3
  257. data/features/thinking_sphinx/db/migrations/create_authors_posts.rb +0 -6
  258. data/features/thinking_sphinx/db/migrations/create_betas.rb +0 -5
  259. data/features/thinking_sphinx/db/migrations/create_boxes.rb +0 -5
  260. data/features/thinking_sphinx/db/migrations/create_categories.rb +0 -3
  261. data/features/thinking_sphinx/db/migrations/create_comments.rb +0 -10
  262. data/features/thinking_sphinx/db/migrations/create_developers.rb +0 -7
  263. data/features/thinking_sphinx/db/migrations/create_extensible_betas.rb +0 -5
  264. data/features/thinking_sphinx/db/migrations/create_gammas.rb +0 -3
  265. data/features/thinking_sphinx/db/migrations/create_genres.rb +0 -3
  266. data/features/thinking_sphinx/db/migrations/create_music.rb +0 -6
  267. data/features/thinking_sphinx/db/migrations/create_people.rb +0 -13
  268. data/features/thinking_sphinx/db/migrations/create_posts.rb +0 -6
  269. data/features/thinking_sphinx/db/migrations/create_robots.rb +0 -4
  270. data/features/thinking_sphinx/db/migrations/create_taggings.rb +0 -5
  271. data/features/thinking_sphinx/db/migrations/create_tags.rb +0 -4
  272. data/features/thinking_sphinx/models/alpha.rb +0 -23
  273. data/features/thinking_sphinx/models/andrew.rb +0 -17
  274. data/features/thinking_sphinx/models/animal.rb +0 -5
  275. data/features/thinking_sphinx/models/author.rb +0 -3
  276. data/features/thinking_sphinx/models/beta.rb +0 -13
  277. data/features/thinking_sphinx/models/box.rb +0 -8
  278. data/features/thinking_sphinx/models/cat.rb +0 -3
  279. data/features/thinking_sphinx/models/category.rb +0 -4
  280. data/features/thinking_sphinx/models/comment.rb +0 -10
  281. data/features/thinking_sphinx/models/developer.rb +0 -21
  282. data/features/thinking_sphinx/models/dog.rb +0 -3
  283. data/features/thinking_sphinx/models/extensible_beta.rb +0 -9
  284. data/features/thinking_sphinx/models/fox.rb +0 -5
  285. data/features/thinking_sphinx/models/gamma.rb +0 -5
  286. data/features/thinking_sphinx/models/genre.rb +0 -3
  287. data/features/thinking_sphinx/models/medium.rb +0 -5
  288. data/features/thinking_sphinx/models/music.rb +0 -10
  289. data/features/thinking_sphinx/models/person.rb +0 -24
  290. data/features/thinking_sphinx/models/post.rb +0 -22
  291. data/features/thinking_sphinx/models/robot.rb +0 -12
  292. data/features/thinking_sphinx/models/tag.rb +0 -3
  293. data/lib/cucumber/thinking_sphinx/external_world.rb +0 -12
  294. data/lib/cucumber/thinking_sphinx/internal_world.rb +0 -137
  295. data/lib/cucumber/thinking_sphinx/sql_logger.rb +0 -28
  296. data/lib/thinking_sphinx/action_controller.rb +0 -31
  297. data/lib/thinking_sphinx/active_record/attribute_updates.rb +0 -54
  298. data/lib/thinking_sphinx/active_record/collection_proxy.rb +0 -47
  299. data/lib/thinking_sphinx/active_record/collection_proxy_with_scopes.rb +0 -27
  300. data/lib/thinking_sphinx/active_record/delta.rb +0 -67
  301. data/lib/thinking_sphinx/active_record/has_many_association.rb +0 -44
  302. data/lib/thinking_sphinx/active_record/has_many_association_with_scopes.rb +0 -21
  303. data/lib/thinking_sphinx/active_record/scopes.rb +0 -110
  304. data/lib/thinking_sphinx/adapters/abstract_adapter.rb +0 -94
  305. data/lib/thinking_sphinx/adapters/mysql_adapter.rb +0 -62
  306. data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +0 -188
  307. data/lib/thinking_sphinx/association.rb +0 -230
  308. data/lib/thinking_sphinx/attribute.rb +0 -405
  309. data/lib/thinking_sphinx/auto_version.rb +0 -40
  310. data/lib/thinking_sphinx/bundled_search.rb +0 -40
  311. data/lib/thinking_sphinx/class_facet.rb +0 -20
  312. data/lib/thinking_sphinx/connection.rb +0 -71
  313. data/lib/thinking_sphinx/context.rb +0 -81
  314. data/lib/thinking_sphinx/core/string.rb +0 -15
  315. data/lib/thinking_sphinx/deltas/delete_job.rb +0 -16
  316. data/lib/thinking_sphinx/deltas/index_job.rb +0 -17
  317. data/lib/thinking_sphinx/deploy/capistrano.rb +0 -99
  318. data/lib/thinking_sphinx/field.rb +0 -98
  319. data/lib/thinking_sphinx/index/builder.rb +0 -315
  320. data/lib/thinking_sphinx/index/faux_column.rb +0 -118
  321. data/lib/thinking_sphinx/join.rb +0 -37
  322. data/lib/thinking_sphinx/property.rb +0 -187
  323. data/lib/thinking_sphinx/search_methods.rb +0 -439
  324. data/lib/thinking_sphinx/sinatra.rb +0 -7
  325. data/lib/thinking_sphinx/source.rb +0 -194
  326. data/lib/thinking_sphinx/source/internal_properties.rb +0 -51
  327. data/lib/thinking_sphinx/source/sql.rb +0 -174
  328. data/spec/fixtures/data.sql +0 -32
  329. data/spec/fixtures/database.yml.default +0 -3
  330. data/spec/fixtures/models.rb +0 -164
  331. data/spec/fixtures/structure.sql +0 -146
  332. data/spec/sphinx_helper.rb +0 -60
  333. data/spec/support/rails.rb +0 -25
  334. data/spec/thinking_sphinx/active_record/delta_spec.rb +0 -123
  335. data/spec/thinking_sphinx/active_record/has_many_association_spec.rb +0 -173
  336. data/spec/thinking_sphinx/active_record/scopes_spec.rb +0 -177
  337. data/spec/thinking_sphinx/active_record_spec.rb +0 -573
  338. data/spec/thinking_sphinx/adapters/abstract_adapter_spec.rb +0 -163
  339. data/spec/thinking_sphinx/association_spec.rb +0 -250
  340. data/spec/thinking_sphinx/attribute_spec.rb +0 -552
  341. data/spec/thinking_sphinx/auto_version_spec.rb +0 -103
  342. data/spec/thinking_sphinx/connection_spec.rb +0 -77
  343. data/spec/thinking_sphinx/context_spec.rb +0 -127
  344. data/spec/thinking_sphinx/core/array_spec.rb +0 -9
  345. data/spec/thinking_sphinx/core/string_spec.rb +0 -9
  346. data/spec/thinking_sphinx/facet_spec.rb +0 -359
  347. data/spec/thinking_sphinx/field_spec.rb +0 -127
  348. data/spec/thinking_sphinx/index/builder_spec.rb +0 -532
  349. data/spec/thinking_sphinx/index/faux_column_spec.rb +0 -36
  350. data/spec/thinking_sphinx/search_methods_spec.rb +0 -156
  351. data/spec/thinking_sphinx/source_spec.rb +0 -267
  352. data/spec/thinking_sphinx/test_spec.rb +0 -20
@@ -1,3 +0,0 @@
1
- username: root
2
- password:
3
- host: localhost
@@ -1,164 +0,0 @@
1
- class Tag < ActiveRecord::Base
2
- belongs_to :person
3
- belongs_to :football_team
4
- belongs_to :cricket_team
5
- end
6
-
7
- class FootballTeam < ActiveRecord::Base
8
- has_many :tags
9
- has_many :people, :through => :tags
10
- end
11
-
12
- class CricketTeam < ActiveRecord::Base
13
- has_many :people, :foreign_key => :team_id
14
-
15
- define_index do
16
- indexes :name
17
- has "SELECT cricket_team_id, id FROM tags", :source => :query, :as => :tags
18
- end
19
- end
20
-
21
- class Contact < ActiveRecord::Base
22
- belongs_to :person
23
- end
24
-
25
- class Friendship < ActiveRecord::Base
26
- belongs_to :person
27
- belongs_to :friend, :class_name => "Person", :foreign_key => :friend_id
28
-
29
- define_index do
30
- indexes "'something'", :as => :something
31
- has person_id, friend_id
32
-
33
- set_property :latitude_attr => :person_id
34
- set_property :longitude_attr => :person_id
35
- end
36
-
37
- sphinx_scope(:reverse) {
38
- {:order => "@weight ASC"}
39
- }
40
- end
41
-
42
- class Link < ActiveRecord::Base
43
- has_and_belongs_to_many :people
44
- end
45
-
46
- class Person < ActiveRecord::Base
47
- belongs_to :team, :polymorphic => :true
48
- belongs_to :source, :polymorphic => :true
49
- has_many :contacts
50
-
51
- has_many :friendships
52
- has_many :friends, :through => :friendships
53
-
54
- has_many :tags
55
- has_many :football_teams, :through => :tags
56
-
57
- has_and_belongs_to_many :links
58
-
59
- define_index do
60
- indexes [first_name, middle_initial, last_name], :as => :name
61
- indexes team.name, :as => :team_name
62
- indexes contacts.phone_number, :as => :phone_numbers
63
- indexes city, :prefixes => true, :facet => true
64
- indexes state, :infixes => true, :facet => true
65
-
66
- has [first_name, middle_initial, last_name], :as => :name_sort
67
- has team.name, :as => :team_name_sort
68
-
69
- has [:id, :team_id], :as => :ids
70
- has team(:id), :as => :team_id
71
- has football_teams(:id), :as => :football_team_id
72
-
73
- has contacts.phone_number, :as => :phone_number_sort
74
- has contacts(:id), :as => :contact_ids
75
-
76
- has birthday, :facet => true
77
-
78
- has friendships.person_id, :as => :friendly_ids
79
-
80
- has :id, :as => :latitude
81
- has :id, :as => :longitude
82
-
83
- set_property :delta => true
84
- end
85
- end
86
-
87
- class Parent < Person
88
- end
89
-
90
- module Admin
91
- class Person < ::Person
92
- end
93
- end
94
-
95
- class Child < Person
96
- belongs_to :parent
97
- define_index do
98
- indexes [parent.first_name, parent.middle_initial, parent.last_name], :as => :parent_name
99
- end
100
- end
101
-
102
- class Teenager < Child
103
- end
104
-
105
- class Alpha < ActiveRecord::Base
106
- has_many :betas, :class_name => 'Beta'
107
- has_many :thetas
108
-
109
- define_index do
110
- indexes :name, :sortable => true
111
-
112
- has :id, :as => :lat
113
- has :id, :as => :lng
114
-
115
- set_property :field_weights => {"name" => 10}
116
- end
117
-
118
- def big_name
119
- name.upcase
120
- end
121
-
122
- def sphinx_attributes
123
- :existing
124
- end
125
- end
126
-
127
- class Beta < ActiveRecord::Base
128
- has_many :gammas
129
-
130
- define_index do
131
- indexes :name, :sortable => true
132
-
133
- has :id, :as => :lat
134
- has :id, :as => :lon
135
-
136
- set_property :delta => true
137
- end
138
-
139
- def excerpts
140
- false
141
- end
142
-
143
- def matching_fields
144
- :foo
145
- end
146
- end
147
-
148
- class Gamma < ActiveRecord::Base
149
- #
150
- end
151
-
152
- class Theta < ActiveRecord::Base
153
- #
154
- end
155
-
156
- class Search < ActiveRecord::Base
157
- #
158
- end
159
-
160
- class BigFoo < ActiveRecord::Base
161
- define_index do
162
- indexes name
163
- end
164
- end
@@ -1,146 +0,0 @@
1
- DROP TABLE IF EXISTS `people`;
2
-
3
- CREATE TABLE `people` (
4
- `id` int(11) NOT NULL auto_increment,
5
- `first_name` varchar(50) NULL,
6
- `middle_initial` varchar(10) NULL,
7
- `last_name` varchar(50) NULL,
8
- `gender` varchar(10) NULL,
9
- `street_address` varchar(200) NULL,
10
- `city` varchar(100) NULL,
11
- `state` varchar(100) NULL,
12
- `postcode` varchar(10) NULL,
13
- `email` varchar(100) NULL,
14
- `birthday` datetime NULL,
15
- `team_id` int(11) NULL,
16
- `team_type` varchar(50) NULL,
17
- `type` varchar(50) NULL,
18
- `parent_id` varchar(50) NULL,
19
- `source_id` int(11) NULL,
20
- `source_type` varchar(50) NULL,
21
- `delta` tinyint(1) NOT NULL DEFAULT 0,
22
- PRIMARY KEY (`id`)
23
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
24
-
25
- DROP TABLE IF EXISTS `friendships`;
26
-
27
- CREATE TABLE `friendships` (
28
- `id` int(11) NOT NULL auto_increment,
29
- `person_id` int(11) NOT NULL,
30
- `friend_id` int(11) NOT NULL,
31
- `created_at` datetime NOT NULL,
32
- `created_on` date NULL,
33
- `updated_at` datetime NOT NULL,
34
- PRIMARY KEY (`id`)
35
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
36
-
37
- DROP TABLE IF EXISTS `football_teams`;
38
-
39
- CREATE TABLE `football_teams` (
40
- `id` int(11) NOT NULL auto_increment,
41
- `name` varchar(50) NOT NULL,
42
- `state` varchar(50) NOT NULL,
43
- `league` varchar(50) NOT NULL,
44
- PRIMARY KEY (`id`)
45
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
46
-
47
- DROP TABLE IF EXISTS `cricket_teams`;
48
-
49
- CREATE TABLE `cricket_teams` (
50
- `id` int(11) NOT NULL auto_increment,
51
- `name` varchar(50) NOT NULL,
52
- `state` varchar(50) NOT NULL,
53
- PRIMARY KEY (`id`)
54
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
55
-
56
- DROP TABLE IF EXISTS `contacts`;
57
-
58
- CREATE TABLE `contacts` (
59
- `id` int(11) NOT NULL auto_increment,
60
- `phone_number` varchar(50) NOT NULL,
61
- `person_id` int(11) NOT NULL,
62
- PRIMARY KEY (`id`)
63
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
64
-
65
- DROP TABLE IF EXISTS `alphas`;
66
-
67
- CREATE TABLE `alphas` (
68
- `id` int(11) NOT NULL auto_increment,
69
- `name` varchar(50) NOT NULL,
70
- `value` int(11),
71
- `cost` decimal(10,6),
72
- PRIMARY KEY (`id`)
73
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
74
-
75
- DROP TABLE IF EXISTS `betas`;
76
-
77
- CREATE TABLE `betas` (
78
- `id` int(11) NOT NULL auto_increment,
79
- `name` varchar(50) NOT NULL,
80
- `alpha_id` int(11),
81
- `delta` tinyint(1) NOT NULL DEFAULT 0,
82
- PRIMARY KEY (`id`)
83
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
84
-
85
- DROP TABLE IF EXISTS `gammas`;
86
-
87
- CREATE TABLE `gammas` (
88
- `id` int(11) NOT NULL auto_increment,
89
- `name` varchar(50) NOT NULL,
90
- `value` int(11),
91
- `beta_id` int(11),
92
- PRIMARY KEY (`id`)
93
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
94
-
95
- DROP TABLE IF EXISTS `thetas`;
96
-
97
- CREATE TABLE `thetas` (
98
- `id` int(11) NOT NULL auto_increment,
99
- `name` varchar(50) NOT NULL,
100
- `value` int(11),
101
- `alpha_id` int(11),
102
- PRIMARY KEY (`id`)
103
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
104
-
105
- DROP TABLE IF EXISTS `searches`;
106
-
107
- CREATE TABLE `searches` (
108
- `id` int(11) NOT NULL auto_increment,
109
- `name` varchar(50) NOT NULL,
110
- PRIMARY KEY (`id`)
111
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
112
-
113
- DROP TABLE IF EXISTS `tags`;
114
-
115
- CREATE TABLE `tags` (
116
- `id` int(11) NOT NULL auto_increment,
117
- `person_id` int(11) NOT NULL,
118
- `football_team_id` int(11) NOT NULL,
119
- `cricket_team_id` int(11) NOT NULL,
120
- `name` varchar(50) NOT NULL,
121
- PRIMARY KEY (`id`)
122
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
123
-
124
- DROP TABLE IF EXISTS `links`;
125
-
126
- CREATE TABLE `links` (
127
- `id` int(11) NOT NULL auto_increment,
128
- `url` varchar(50) NOT NULL,
129
- `description` varchar(200),
130
- PRIMARY KEY (`id`)
131
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
132
-
133
- DROP TABLE IF EXISTS `links_people`;
134
-
135
- CREATE TABLE `links_people` (
136
- `link_id` int(11) NOT NULL,
137
- `person_id` int(11) NOT NULL
138
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
139
-
140
- DROP TABLE IF EXISTS `big_foos`;
141
-
142
- CREATE TABLE `big_foos` (
143
- `id` bigint NOT NULL auto_increment,
144
- `name` varchar(50) NOT NULL,
145
- PRIMARY KEY (`id`)
146
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -1,60 +0,0 @@
1
- require 'active_record'
2
- require 'active_record/connection_adapters/mysql2_adapter'
3
- require 'active_record/connection_adapters/postgresql_adapter'
4
- require 'yaml'
5
-
6
- class SphinxHelper
7
- attr_accessor :host, :username, :password, :socket
8
- attr_reader :path
9
-
10
- def initialize
11
- @host = 'localhost'
12
- @username = 'root'
13
- @password = ''
14
-
15
- if File.exist?('spec/fixtures/database.yml')
16
- config = YAML.load(File.open('spec/fixtures/database.yml'))
17
- @host = config['host']
18
- @username = config['username']
19
- @password = config['password']
20
- @socket = config['socket']
21
- @sslca = config['sslca']
22
- @sslcert = config['sslcert']
23
- @sslkey = config['sslkey']
24
- end
25
-
26
- @path = File.expand_path(File.dirname(__FILE__))
27
- end
28
-
29
- def setup_mysql
30
- ActiveRecord::Base.establish_connection(
31
- :adapter => mysql_adapter,
32
- :database => 'thinking_sphinx',
33
- :username => @username,
34
- :password => @password,
35
- :host => @host,
36
- :socket => @socket,
37
- :sslca => @sslca,
38
- :sslcert => @sslcert,
39
- :sslkey => @sslkey
40
- )
41
- ActiveRecord::Base.logger = Logger.new(File.open('tmp/activerecord.log', 'a'))
42
-
43
- structure = File.open('spec/fixtures/structure.sql') { |f| f.read.chomp }
44
- structure.split(';').each { |table|
45
- ActiveRecord::Base.connection.execute table
46
- }
47
-
48
- File.open('spec/fixtures/data.sql') { |f|
49
- while line = f.gets
50
- ActiveRecord::Base.connection.execute line unless line.blank?
51
- end
52
- }
53
- end
54
-
55
- private
56
-
57
- def mysql_adapter
58
- defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'
59
- end
60
- end
@@ -1,25 +0,0 @@
1
- module Rails
2
- def self.root
3
- File.join(Dir.pwd, 'tmp')
4
- end
5
-
6
- def self.env
7
- @@environment ||= 'development'
8
- end
9
-
10
- def self.env=(env)
11
- @@environment = env
12
- end
13
-
14
- def self.application
15
- @@application ||= begin
16
- railties = Struct.new(:engines).new([])
17
- Struct.new(:paths, :railties).new(Hash.new([]), railties)
18
- end
19
- end
20
- end
21
-
22
- ActiveSupport::Inflector.inflections do |inflect|
23
- inflect.plural /^beta$/i, 'betas'
24
- inflect.singular /^betas$/i, 'beta'
25
- end
@@ -1,123 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "ThinkingSphinx::ActiveRecord::Delta" do
4
- it "should call the toggle_delta method after a save" do
5
- @beta = Beta.new(:name => 'beta')
6
- @beta.should_receive(:toggle_delta).at_least(1).times.and_return(true)
7
-
8
- @beta.save
9
- end
10
-
11
- it "should call the toggle_delta method after a save!" do
12
- @beta = Beta.new(:name => 'beta')
13
- @beta.should_receive(:toggle_delta).at_least(1).times.and_return(true)
14
-
15
- @beta.save!
16
- end
17
-
18
- describe "suspended_delta method" do
19
- before :each do
20
- ThinkingSphinx.deltas_suspended = false
21
- Person.sphinx_indexes.first.delta_object.stub!(:` => "")
22
- end
23
-
24
- it "should execute the argument block with deltas disabled" do
25
- ThinkingSphinx.should_receive(:deltas_suspended=).once.with(true)
26
- ThinkingSphinx.should_receive(:deltas_suspended=).once.with(false)
27
- lambda { Person.suspended_delta { raise 'i was called' } }.should(
28
- raise_error(Exception)
29
- )
30
- end
31
-
32
- it "should restore deltas_enabled to its original setting" do
33
- ThinkingSphinx.deltas_suspended = true
34
- ThinkingSphinx.should_receive(:deltas_suspended=).twice.with(true)
35
- Person.suspended_delta { 'no-op' }
36
- end
37
-
38
- it "should restore deltas_enabled to its original setting even if there was an exception" do
39
- ThinkingSphinx.deltas_suspended = true
40
- ThinkingSphinx.should_receive(:deltas_suspended=).twice.with(true)
41
- lambda { Person.suspended_delta { raise 'bad error' } }.should(
42
- raise_error(Exception)
43
- )
44
- end
45
-
46
- it "should reindex by default after the code block is run" do
47
- Person.should_receive(:index_delta)
48
- Person.suspended_delta { 'no-op' }
49
- end
50
-
51
- it "should not reindex after the code block if false is passed in" do
52
- Person.should_not_receive(:index_delta)
53
- Person.suspended_delta(false) { 'no-op' }
54
- end
55
- end
56
-
57
- describe "toggle_delta method" do
58
- it "should set the delta value to true" do
59
- @person = Person.new
60
-
61
- @person.delta.should be_false
62
- @person.send(:toggle_delta)
63
- @person.delta.should be_true
64
- end
65
- end
66
-
67
- describe "index_delta method" do
68
- let(:index_job) { double :perform => true }
69
-
70
- before :each do
71
- ThinkingSphinx::Configuration.stub!(:environment => "spec")
72
- ThinkingSphinx.deltas_enabled = true
73
- ThinkingSphinx.updates_enabled = true
74
- ThinkingSphinx.stub!(:sphinx_running? => true)
75
- Person.delta_objects.first.stub!(:` => "", :toggled => true)
76
- ThinkingSphinx::Deltas::IndexJob.stub :new => index_job
77
-
78
- @person = Person.new
79
- Person.stub!(:search_for_id => false)
80
- @person.stub!(:sphinx_document_id => 1)
81
-
82
- @client = Riddle::Client.new
83
- @client.stub!(:update => true)
84
- ThinkingSphinx::Connection.stub(:take).and_yield @client
85
- end
86
-
87
- it "shouldn't index if delta indexing is disabled" do
88
- ThinkingSphinx.deltas_enabled = false
89
- Person.sphinx_indexes.first.delta_object.should_not_receive(:`)
90
- @client.should_not_receive(:update)
91
-
92
- @person.send(:index_delta)
93
- end
94
-
95
- it "shouldn't index if index updating is disabled" do
96
- ThinkingSphinx.updates_enabled = false
97
- Person.sphinx_indexes.first.delta_object.should_not_receive(:`)
98
-
99
- @person.send(:index_delta)
100
- end
101
-
102
- it "shouldn't index if the environment is 'test'" do
103
- ThinkingSphinx.deltas_enabled = nil
104
- ThinkingSphinx::Configuration.stub!(:environment => "test")
105
- Person.sphinx_indexes.first.delta_object.should_not_receive(:`)
106
-
107
- @person.send(:index_delta)
108
- end
109
-
110
- it "should run the index job" do
111
- index_job.should_receive(:perform)
112
-
113
- @person.send(:index_delta)
114
- end
115
-
116
- it "should update the deleted attribute if in the core index" do
117
- Person.stub!(:search_for_id => true)
118
- @client.should_receive(:update)
119
-
120
- @person.send(:index_delta)
121
- end
122
- end
123
- end