diff --git a/Rakefile b/Rakefile index e6c517970..776e3004a 100644 --- a/Rakefile +++ b/Rakefile @@ -35,6 +35,8 @@ namespace :bundle do sh "bundle install --gemfile #{__current__.join('elasticsearch-model/gemfiles')}/3.0.gemfile" puts '-'*80 sh "bundle install --gemfile #{__current__.join('elasticsearch-model/gemfiles')}/4.0.gemfile" + puts '-'*80 + sh "bundle install --gemfile #{__current__.join('elasticsearch-model/gemfiles')}/5.0.gemfile" end desc "Remove Gemfile.lock in all subprojects" @@ -45,6 +47,7 @@ namespace :bundle do end sh "rm -f #{__current__.join('elasticsearch-model/gemfiles')}/3.0.gemfile.lock" sh "rm -f #{__current__.join('elasticsearch-model/gemfiles')}/4.0.gemfile.lock" + sh "rm -f #{__current__.join('elasticsearch-model/gemfiles')}/5.0.gemfile.lock" end end diff --git a/elasticsearch-model/.gitignore b/elasticsearch-model/.gitignore index 3934d7e55..8a8ab4613 100644 --- a/elasticsearch-model/.gitignore +++ b/elasticsearch-model/.gitignore @@ -18,3 +18,4 @@ tmp gemfiles/3.0.gemfile.lock gemfiles/4.0.gemfile.lock +gemfiles/5.0.gemfile.lock diff --git a/elasticsearch-model/Rakefile b/elasticsearch-model/Rakefile index 2825f58b0..7f244dd4b 100644 --- a/elasticsearch-model/Rakefile +++ b/elasticsearch-model/Rakefile @@ -28,10 +28,11 @@ namespace :test do test.test_files = FileList["test/integration/**/*_test.rb"] end - desc "Run integration tests against ActiveModel 3 and 4" + desc "Run integration tests against ActiveModel 3, 4 and 5" task :integration do sh "BUNDLE_GEMFILE='#{File.expand_path('../gemfiles/3.0.gemfile', __FILE__)}' bundle exec rake test:run_integration" unless defined?(RUBY_VERSION) && RUBY_VERSION > '2.2' sh "BUNDLE_GEMFILE='#{File.expand_path('../gemfiles/4.0.gemfile', __FILE__)}' bundle exec rake test:run_integration" + sh "BUNDLE_GEMFILE='#{File.expand_path('../gemfiles/5.0.gemfile', __FILE__)}' bundle exec rake test:run_integration" end desc "Run unit and integration tests" diff --git a/elasticsearch-model/elasticsearch-model.gemspec b/elasticsearch-model/elasticsearch-model.gemspec index cba0808ea..07ecc87b9 100644 --- a/elasticsearch-model/elasticsearch-model.gemspec +++ b/elasticsearch-model/elasticsearch-model.gemspec @@ -39,7 +39,7 @@ Gem::Specification.new do |s| s.add_development_dependency "kaminari" s.add_development_dependency "will_paginate" - s.add_development_dependency "minitest", "~> 4.2" + s.add_development_dependency "minitest", ">= 4.2" s.add_development_dependency "test-unit" if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2' s.add_development_dependency "shoulda-context" s.add_development_dependency "mocha" diff --git a/elasticsearch-model/gemfiles/5.0.gemfile b/elasticsearch-model/gemfiles/5.0.gemfile new file mode 100644 index 000000000..75b8a7ca9 --- /dev/null +++ b/elasticsearch-model/gemfiles/5.0.gemfile @@ -0,0 +1,12 @@ +# Usage: +# +# $ BUNDLE_GEMFILE=./gemfiles/5.0.gemfile bundle install +# $ BUNDLE_GEMFILE=./gemfiles/5.0.gemfile bundle exec rake test:integration + +source 'https://rubygems.org' + +gemspec path: '../' + +gem 'activemodel', '~> 5' +gem 'activerecord', '~> 5' +gem 'sqlite3' diff --git a/elasticsearch-model/lib/elasticsearch/model/adapters/active_record.rb b/elasticsearch-model/lib/elasticsearch/model/adapters/active_record.rb index 2d9bb5378..9d092dd10 100644 --- a/elasticsearch-model/lib/elasticsearch/model/adapters/active_record.rb +++ b/elasticsearch-model/lib/elasticsearch/model/adapters/active_record.rb @@ -26,7 +26,10 @@ def records # by redefining `to_a`, unless the user has called `order()` # sql_records.instance_exec(response.response['hits']['hits']) do |hits| - define_singleton_method :to_a do + ar_records_method_name = :to_a + ar_records_method_name = :records if defined?(::ActiveRecord) && ::ActiveRecord::VERSION::MAJOR >= 5 + + define_singleton_method(ar_records_method_name) do if defined?(::ActiveRecord) && ::ActiveRecord::VERSION::MAJOR >= 4 self.load else diff --git a/elasticsearch-model/test/integration/active_record_basic_test.rb b/elasticsearch-model/test/integration/active_record_basic_test.rb index 3636f98f4..bf030c199 100644 --- a/elasticsearch-model/test/integration/active_record_basic_test.rb +++ b/elasticsearch-model/test/integration/active_record_basic_test.rb @@ -100,7 +100,10 @@ def as_indexed_json(options = {}) end should "preserve the search results order for records" do - response = Article.search('title:code') + response = Article.search query: { match: { title: 'code' }}, sort: { clicks: :desc } + + assert_equal response.records[0].clicks, 3 + assert_equal response.records[1].clicks, 2 response.records.each_with_hit do |r, h| assert_equal h._id, r.id.to_s