README.markdown in ts-resque-delta-1.2.4 vs README.markdown in ts-resque-delta-2.0.0

- old
+ new

@@ -5,82 +5,74 @@ **This code is HEAVILY borrowed from [ts-delayed-delta](https://github.com/freelancing-god/ts-delayed-delta).** Installation ------------ -This gem depends on the following gems: _thinking-sphinx_, _resque_, and -_resque-lock-timeout_. - gem install ts-resque-delta +This gem depends on the following gems: `thinking-sphinx` and `resque`. -Add _ts-resque-delta_ to your **Gemfile** file, with the rest of your gem -dependencies: +Currently, you'll need Thinking Sphinx v1.5.0 (for Rails 2), v2.1.0 +(for Rails 3), or - ideally - v3.0.3 or newer (for Rails 3.1 onwards). If you're +on a version of Thinking Sphinx that's too old, you better go upgrade - but +otherwise, add `ts-resque-delta` to your `Gemfile` file with the rest of your +gem dependencies: - gem 'ts-resque-delta', '1.1.1' + gem 'ts-resque-delta', '~> 2.0.0' -If you're using Rails 3, the rake tasks will automatically be loaded by Rails. -If you're using Rails 2, add the following line to your **Rakefile**: +Add the delta property to index definition. If you're using Thinking Sphinx v3, +then it'll look something like this: - require 'thinking_sphinx/deltas/resque_delta/tasks' + ThinkingSphinx::Index.define(:article, + :with => :active_record, + :delta => ThinkingSphinx::Deltas::ResqueDelta + ) do + # fields and attributes and so on... + end -Add the delta property to each `define_index` block: +But if you're still using v1.5 or v2.1, you'll want the following: define_index do - # ... + # fields and attributes and so on... + set_property :delta => ThinkingSphinx::Deltas::ResqueDelta end -If you've never used delta indexes before, you'll want to add the boolean -column named `:delta` to each model's table (note, you must set the `:default` -value to `true`): +If you've never used delta indexes before, you'll need to add the boolean +column named `:delta` to each table for indexed models. A database index for +that column is also recommended. - def self.up - add_column :foos, :delta, :boolean, :default => true, :null => false + def change + add_column :articles, :delta, :boolean, :default => true, :null => false + add_index :articles, :delta end -Also, I highly recommend adding a MySQL index to the table of any model using -delta indexes. The Sphinx indexer uses `WHERE table.delta = 1` whenever the -delta indexer runs and `... = 0` whenever the normal indexer runs. Having the -MySQL index on the delta column will generally be a win: - - def self.up - # ... - add_index :foos, :delta - end - Usage ----- + Once you've got it all set up, all you need to do is make sure that the Resque -worker is running. You can do this by specifying the `:ts_delta` queue when +worker is running. You can do this by specifying the `ts_delta` queue when running Resque: QUEUE=ts_delta,other_queues rake resque:work -Additionally, ts-resque-delta will wrap thinking-sphinx's -`thinking_sphinx:index` and `thinking_sphinx:reindex` tasks with -`thinking_sphinx:lock_deltas` and `thinking_sphinx:unlock_deltas`. This will -prevent the delta indexer from running at the same time as the main indexer. - -Finally, ts-resque-delta also provides a rake task called -`thinking_sphinx:smart_index` (or `ts:si` for short). This task, instead of -locking all the delta indexes at once while the main indexer runs, will lock -each delta index independently and sequentially. Thay way, your delta indexer -can run while the main indexer is processing large core indexes. - Contributors (for ts-resque-delta) ----------------------------------- + * [Aaron Gibralter](https://github.com/agibralter) * [Ryan Schlesinger](https://github.com/ryansch) (Locking/`smart_index`) * [Pat Allan](https://github.com/freelancing-god) (FlyingSphinx support) * [James Richard](https://github.com/ketzusaka) Original Contributors (for ts-delayed-delta) -------------------------------------------- + * [Pat Allan](https://github.com/freelancing-god) * [Ryan Schlesinger](https://github.com/ryansch) (Allowing installs as a plugin) * [Maximilian Schulz](https://max.jungeelite.de) (Ensuring compatibility with Bundler) * [Edgars Beigarts](https://github.com/ebeigarts) (Adding intelligent description for tasks) * [Alexander Simonov](https://simonov.me/) (Explicit table definition) Copyright --------- -Copyright (c) 2011 Aaron Gibralter, and released under an MIT Licence. + +Copyright (c) 2011-2014 Aaron Gibralter and Pat Allan, and released under an MIT +Licence.