diff --git a/Gemfile.lock b/Gemfile.lock index 181a27e..9fdb2e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/README.md b/README.md index 4c4b835..f97a9d3 100644 --- a/README.md +++ b/README.md @@ -210,6 +210,35 @@ User.without_indexing(AccountsIndex) do end ``` +### Asynchronous Indexing + +If you are using a background job processor like Sidekiq or Faktory, you may be interested in indexing documents asynchronously. For this, you can use the [esse-async_indexing](https://github.com/marcosgz/esse-async_indexing) gem. + +Add the `esse-async_indexing` gem to your Gemfile and require the `esse/async_indexing/active_record` file in your application initialization. Make sure to setup the gem configurationg according to the [esse-async_indexing documentation](https://github.com/marcosgz/esse-async_indexing). + + +```ruby +require 'esse/async_indexing/active_record' +``` + +Then, you can use the `async_index_callback` or `async_update_lazy_attribute_callback` methods to push the indexing job to the background job processor. + +```diff +class City < ApplicationRecord + include Esse::ActiveRecord::Model +- include Esse::ActiveRecord::Model ++ include Esse::AsyncIndexing::ActiveRecord::Model + + belongs_to :state, optional: true + + + async_indexing_callback('geos_index:city') { id } +- index_callback('geos_index:city') { id } +- update_lazy_attribute_callback('geos_index:state', 'cities_count', if: :state_id?) { state_id } ++ async_index_callback('geos_index:city', service_name: :sidekiq) { id } ++ async_update_lazy_attribute_callback('geos_index:state', 'cities_count', if: :state_id?, service_name: :sidekiq) { state_id } +end +``` ## Development diff --git a/ci/Gemfile.rails-5.2.lock b/ci/Gemfile.rails-5.2.lock index ed904df..7c8e3b2 100644 --- a/ci/Gemfile.rails-5.2.lock +++ b/ci/Gemfile.rails-5.2.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-6.0.lock b/ci/Gemfile.rails-6.0.lock index 474f759..2934703 100644 --- a/ci/Gemfile.rails-6.0.lock +++ b/ci/Gemfile.rails-6.0.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-6.1.lock b/ci/Gemfile.rails-6.1.lock index 05e889b..770b451 100644 --- a/ci/Gemfile.rails-6.1.lock +++ b/ci/Gemfile.rails-6.1.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-7.0.lock b/ci/Gemfile.rails-7.0.lock index 474f759..2934703 100644 --- a/ci/Gemfile.rails-7.0.lock +++ b/ci/Gemfile.rails-7.0.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/ci/Gemfile.rails-7.1.lock b/ci/Gemfile.rails-7.1.lock index a6d6f56..2b8fd78 100644 --- a/ci/Gemfile.rails-7.1.lock +++ b/ci/Gemfile.rails-7.1.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - esse-active_record (0.3.5) + esse-active_record (0.3.6) activerecord (>= 4.2, < 8) esse (>= 0.3.0) diff --git a/lib/esse/active_record/version.rb b/lib/esse/active_record/version.rb index c4f0160..6175be2 100644 --- a/lib/esse/active_record/version.rb +++ b/lib/esse/active_record/version.rb @@ -2,6 +2,6 @@ module Esse module ActiveRecord - VERSION = '0.3.5' + VERSION = '0.3.6' end end