diff --git a/ChangeLog b/ChangeLog index 0eaca5eb..44b6d83d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ # CHANGELOG +## [1.23.2](https://github.com/algolia/algoliasearch-rails/releases/tag/1.23.2) (2019-06-26) + +**Fixed** + +* Use `copy_index` when initiating a temporary index to preserve settings, synonyms, and rules. + + ## [1.23.0](https://github.com/algolia/algoliasearch-rails/releases/tag/1.23.0) (2019-06-25) **Added** diff --git a/Gemfile b/Gemfile index 17712e9e..634c0ecf 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source "http://rubygems.org" gem 'json', '~> 1.8', '>= 1.8.6' -gem 'algoliasearch', '>= 1.23.0', '< 2.0.0' +gem 'algoliasearch', '>= 1.26.0', '< 2.0.0' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx' gem 'rubysl', '~> 2.0', :platform => :rbx diff --git a/algoliasearch-rails.gemspec b/algoliasearch-rails.gemspec index 1f8fc443..96da855b 100644 --- a/algoliasearch-rails.gemspec +++ b/algoliasearch-rails.gemspec @@ -79,7 +79,7 @@ Gem::Specification.new do |s| if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_runtime_dependency(%q, [">= 1.5.1"]) - s.add_runtime_dependency(%q, [">= 1.23.0", "< 2.0.0"]) + s.add_runtime_dependency(%q, [">= 1.26.0", "< 2.0.0"]) s.add_development_dependency(%q, [">= 2.3.15"]) s.add_development_dependency(%q, [">= 0"]) s.add_development_dependency "travis" @@ -87,11 +87,11 @@ Gem::Specification.new do |s| s.add_development_dependency "rdoc" else s.add_dependency(%q, [">= 1.5.1"]) - s.add_dependency(%q, [">= 1.23.0", "< 2.0.0"]) + s.add_dependency(%q, [">= 1.26.0", "< 2.0.0"]) end else s.add_dependency(%q, [">= 1.5.1"]) - s.add_dependency(%q, [">= 1.23.0", "< 2.0.0"]) + s.add_dependency(%q, [">= 1.26.0", "< 2.0.0"]) end end diff --git a/lib/algoliasearch-rails.rb b/lib/algoliasearch-rails.rb index 8dce3566..5c1caabc 100644 --- a/lib/algoliasearch-rails.rb +++ b/lib/algoliasearch-rails.rb @@ -555,14 +555,21 @@ def algolia_reindex(batch_size = AlgoliaSearch::IndexSettings::DEFAULT_BATCH_SIZ master_settings.delete 'replicas' # init temporary index - index_name = algolia_index_name(options) - tmp_options = options.merge({ :index_name => "#{index_name}.tmp" }) + src_index_name = algolia_index_name(options) + tmp_index_name = "#{src_index_name}.tmp" + tmp_options = options.merge({ :index_name => tmp_index_name }) tmp_options.delete(:per_environment) # already included in the temporary index_name tmp_settings = settings.dup - tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings) - algolia_find_in_batches(batch_size) do |group| - if algolia_conditional_index?(tmp_options) + if options[:check_settings] == false + ::Algolia::copy_index!(src_index_name, tmp_index_name, %w(settings synonyms rules)) + tmp_index = SafeIndex.new(tmp_index_name, !!options[:raise_on_failure]) + else + tmp_index = algolia_ensure_init(tmp_options, tmp_settings, master_settings) + end + + algolia_find_in_batches(batch_size) do |group| + if algolia_conditional_index?(options) # select only indexable objects group = group.select { |o| algolia_indexable?(o, tmp_options) } end @@ -570,7 +577,7 @@ def algolia_reindex(batch_size = AlgoliaSearch::IndexSettings::DEFAULT_BATCH_SIZ tmp_index.save_objects(objects) end - move_task = SafeIndex.move_index(tmp_index.name, index_name) + move_task = SafeIndex.move_index(tmp_index.name, src_index_name) master_index.wait_task(move_task["taskID"]) if synchronous || options[:synchronous] end nil diff --git a/lib/algoliasearch/version.rb b/lib/algoliasearch/version.rb index aa880e8a..e48a07cf 100644 --- a/lib/algoliasearch/version.rb +++ b/lib/algoliasearch/version.rb @@ -1,3 +1,3 @@ module AlgoliaSearch - VERSION = '1.23.1' + VERSION = '1.23.2' end