diff --git a/plugins/elasticsearch/Rakefile b/plugins/elasticsearch/Rakefile index 2c6eedd..c455af5 100644 --- a/plugins/elasticsearch/Rakefile +++ b/plugins/elasticsearch/Rakefile @@ -2,6 +2,10 @@ require 'open-uri' +def elasticsearch_development + return ENV["ELASTICSEARCH_DEVELOPMENT"].nil? +end + desc "download elasticsearch" task :download do unless File.exists? '/tmp/elasticsearch.deb' @@ -22,13 +26,19 @@ task :start do if not system 'sudo systemctl start elasticsearch > /dev/null' Rake::Task['install'].invoke end - sh 'sudo systemctl start elasticsearch' - sh 'sudo systemctl enable elasticsearch' - sleep 100 # this sleep gives time to the service to be ready. + puts "Enable Elasticsearch service" + if elasticsearch_development + sh 'sudo systemctl start elasticsearch >> /dev/null 2>&1' + sh 'sudo systemctl enable elasticsearch >> /dev/null 2>&1' + sleep 2 + end end desc "stop elasticsearch" task :stop do - sh 'sudo systemctl stop elasticsearch' - sh 'sudo systemctl disable elasticsearch' + puts "Disable elasticsearch service" + if elasticsearch_development + sh 'sudo systemctl stop elasticsearch >> /dev/null 2>&1' + sh 'sudo systemctl disable elasticsearch >> /dev/null 2>&1' + end end diff --git a/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb index e2f4151..c3c7ab3 100644 --- a/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb +++ b/plugins/elasticsearch/lib/elasticsearch_indexed_model.rb @@ -2,6 +2,7 @@ module ElasticsearchIndexedModel def self.included base base.send :include, Elasticsearch::Model + base.send :index_name, "#{Rails.env}_#{base.index_name}" base.extend ClassMethods base.class_eval do settings index: { number_of_shards: 1 } do @@ -12,6 +13,7 @@ module ElasticsearchIndexedModel print '.' end end + base.__elasticsearch__.client.indices.delete \ index: base.index_name rescue nil base.__elasticsearch__.client.indices.create \ diff --git a/plugins/elasticsearch/test/test_helper.rb b/plugins/elasticsearch/test/test_helper.rb index 55f2b79..ff19baa 100644 --- a/plugins/elasticsearch/test/test_helper.rb +++ b/plugins/elasticsearch/test/test_helper.rb @@ -13,18 +13,14 @@ module ElasticsearchTestHelper end def teardown - indexed_models.each {|model| - model.__elasticsearch__.client.indices.delete index: model.index_name - } end def import_instancies indexed_models.each {|model| - model.__elasticsearch__.create_index! - sleep 2 + model.__elasticsearch__.create_index! force: true model.import - sleep 1 } + sleep 1 end def setup_environment diff --git a/plugins/elasticsearch/test/unit/controllers/elasticsearch_plugin_controller_test.rb b/plugins/elasticsearch/test/unit/controllers/elasticsearch_plugin_controller_test.rb index 76a2d55..0266d66 100644 --- a/plugins/elasticsearch/test/unit/controllers/elasticsearch_plugin_controller_test.rb +++ b/plugins/elasticsearch/test/unit/controllers/elasticsearch_plugin_controller_test.rb @@ -20,7 +20,7 @@ class ElasticsearchPluginControllerTest < ActionController::TestCase end def create_communities - 10.times do | index | + 6.times do | index | fast_create Community, name: "community_#{index}", created_at: Date.new end end @@ -47,10 +47,10 @@ class ElasticsearchPluginControllerTest < ActionController::TestCase end should 'return results filtered by selected_type' do - get :index, { 'selected_type' => :person} + get :index, { 'selected_type' => :community} assert_response :success - assert_select ".search-item", 5 - assert_template partial: '_person_display' + assert_select ".search-item", 6 + assert_template partial: '_community_display' end should 'return results filtered by query' do @@ -74,31 +74,30 @@ class ElasticsearchPluginControllerTest < ActionController::TestCase end should 'return new person indexed' do - get :index, { "selected_type" => :person} + get :index, { "selected_type" => :community} assert_response :success - assert_select ".search-item", 5 + assert_select ".search-item", 6 - object = create_user "New Person" - Person.import - sleep 1 + fast_create Community, name: "community_#{7}", created_at: Date.new + Community.import + sleep 2 - get :index, { "selected_type" => :person} + get :index, { "selected_type" => :community} assert_response :success - assert_select ".search-item", 6 + assert_select ".search-item", 7 end should 'not return person deleted' do - get :index, { "selected_type" => :person} + get :index, { "selected_type" => :community} assert_response :success - assert_select ".search-item", 5 + assert_select ".search-item", 6 - Person.first.delete - Person.import - sleep 1 + Community.first.delete + Community.import - get :index, { "selected_type" => :person} + get :index, { "selected_type" => :community} assert_response :success - assert_select ".search-item", 4 + assert_select ".search-item", 5 end should 'redirect to elasticsearch plugin when request are send to core' do -- libgit2 0.21.2