Commit 9c9311bd1a49f25451d112d18696f9b57508f640
1 parent
82ae16fc
Exists in
master
and in
29 other branches
[pluginize-solr] Moving solr reindex to a plugin
Starting pluginization of solr!
Showing
36 changed files
with
232 additions
and
115 deletions
Show diff stats
app/models/article.rb
... | ... | @@ -469,10 +469,6 @@ class Article < ActiveRecord::Base |
469 | 469 | allow_post_content?(user) || user && allow_members_to_edit && user.is_member_of?(profile) |
470 | 470 | end |
471 | 471 | |
472 | - def comments_updated | |
473 | - solr_save | |
474 | - end | |
475 | - | |
476 | 472 | def accept_category?(cat) |
477 | 473 | !cat.is_a?(ProductCategory) |
478 | 474 | end | ... | ... |
app/models/category.rb
app/models/certifier.rb
app/models/comment.rb
... | ... | @@ -74,12 +74,6 @@ class Comment < ActiveRecord::Base |
74 | 74 | self.find(:all, :order => 'created_at desc, id desc', :limit => limit) |
75 | 75 | end |
76 | 76 | |
77 | - after_save :notify_article | |
78 | - after_destroy :notify_article | |
79 | - def notify_article | |
80 | - article.comments_updated if article.kind_of?(Article) | |
81 | - end | |
82 | - | |
83 | 77 | after_create :new_follower |
84 | 78 | def new_follower |
85 | 79 | if source.kind_of?(Article) | ... | ... |
app/models/enterprise.rb
... | ... | @@ -14,7 +14,6 @@ class Enterprise < Organization |
14 | 14 | |
15 | 15 | has_and_belongs_to_many :fans, :class_name => 'Person', :join_table => 'favorite_enteprises_people' |
16 | 16 | |
17 | - after_save_reindex [:products], :with => :delayed_job | |
18 | 17 | extra_data_for_index :product_categories |
19 | 18 | def product_categories |
20 | 19 | products.includes(:product_category).map{|p| p.category_full_name}.compact | ... | ... |
app/models/product.rb
... | ... | @@ -294,6 +294,5 @@ class Product < ActiveRecord::Base |
294 | 294 | ], :facets => facets_option_for_solr, |
295 | 295 | :boost => proc{ |p| boost = 1; Boosts.each{ |b| boost = boost * (1 - ((1 - b[2].call(p)) * b[1])) }; boost} |
296 | 296 | handle_asynchronously :solr_save |
297 | - after_save_reindex [:enterprise], :with => :delayed_job | |
298 | 297 | |
299 | 298 | end | ... | ... |
app/models/product_category.rb
app/models/profile.rb
... | ... | @@ -963,7 +963,7 @@ private :generate_url, :url_options |
963 | 963 | {:categories => {:fields => [:name, :path, :slug, :lat, :lng, :acronym, :abbreviation]}}, |
964 | 964 | ], :facets => facets_option_for_solr, |
965 | 965 | :boost => proc{ |p| 10 if p.enabled } |
966 | - after_save_reindex [:articles], :with => :delayed_job | |
966 | + | |
967 | 967 | handle_asynchronously :solr_save |
968 | 968 | |
969 | 969 | def control_panel_settings_button | ... | ... |
app/models/qualifier.rb
... | ... | @@ -0,0 +1,13 @@ |
1 | +class SolrPlugin < Noosfero::Plugin | |
2 | + | |
3 | + def self.plugin_name | |
4 | + "Solr" | |
5 | + end | |
6 | + | |
7 | + def self.plugin_description | |
8 | + _("Uses Solr as search engine.") | |
9 | + end | |
10 | + | |
11 | +end | |
12 | + | |
13 | +Dir[File.join(SolrPlugin.root_path, 'lib', 'ext', '*.rb')].each {|file| require_dependency file } | ... | ... |
... | ... | @@ -0,0 +1,21 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class CategoryTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex articles after saving' do | |
12 | + cat = Category.create!(:name => 'category 1', :environment_id => Environment.default.id) | |
13 | + art = Article.create!(:name => 'something', :profile_id => fast_create(Person).id) | |
14 | + art.add_category cat | |
15 | + cat.reload | |
16 | + | |
17 | + solr_doc = art.to_solr_doc | |
18 | + Article.any_instance.expects(:to_solr_doc).returns(solr_doc) | |
19 | + cat.save! | |
20 | + end | |
21 | +end | ... | ... |
... | ... | @@ -0,0 +1,19 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class CertifierTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex products after saving' do | |
12 | + product = mock | |
13 | + Certifier.any_instance.stubs(:products).returns([product]) | |
14 | + Certifier.expects(:solr_batch_add).with(includes(product)) | |
15 | + cert = fast_create(Certifier) | |
16 | + cert.save! | |
17 | + end | |
18 | +end | |
19 | + | ... | ... |
... | ... | @@ -0,0 +1,32 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class CommentTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'notify article to reindex after saving' do | |
12 | + owner = create_user('testuser').person | |
13 | + article = owner.articles.create!(:name => 'test', :body => '...') | |
14 | + | |
15 | + article.expects(:solr_plugin_comments_updated) | |
16 | + | |
17 | + c1 = article.comments.new(:title => "A comment", :body => '...', :author => owner) | |
18 | + c1.stubs(:article).returns(article) | |
19 | + c1.save! | |
20 | + end | |
21 | + | |
22 | + should 'notify article to reindex after being removed' do | |
23 | + owner = create_user('testuser').person | |
24 | + article = owner.articles.create!(:name => 'test', :body => '...') | |
25 | + c1 = article.comments.create!(:title => "A comment", :body => '...', :author => owner) | |
26 | + | |
27 | + c1.stubs(:article).returns(article) | |
28 | + article.expects(:solr_plugin_comments_updated) | |
29 | + c1.destroy | |
30 | + end | |
31 | +end | |
32 | + | ... | ... |
... | ... | @@ -0,0 +1,18 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class EnterpriseTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + @product_category = fast_create(ProductCategory) | |
8 | + end | |
9 | + | |
10 | + attr_accessor :environment, :product_category | |
11 | + | |
12 | + should 'reindex when products are changed' do | |
13 | + enterprise = fast_create(Enterprise) | |
14 | + product = fast_create(Product, :enterprise_id => enterprise.id, :product_category_id => product_category.id) | |
15 | + Product.expects(:solr_batch_add_association).with(product, :enterprise) | |
16 | + product.update_attribute :name, "novo nome" | |
17 | + end | |
18 | +end | ... | ... |
... | ... | @@ -0,0 +1,19 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class ProductCategoryTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex products after save' do | |
12 | + product = mock | |
13 | + ProductCategory.any_instance.stubs(:products).returns([product]) | |
14 | + ProductCategory.expects(:solr_batch_add).with(includes(product)) | |
15 | + pc = fast_create(ProductCategory) | |
16 | + pc.save! | |
17 | + end | |
18 | +end | |
19 | + | ... | ... |
... | ... | @@ -0,0 +1,19 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class ProductTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex enterprise after saving' do | |
12 | + ent = fast_create(Enterprise) | |
13 | + cat = fast_create(ProductCategory) | |
14 | + prod = Product.create!(:name => 'something', :enterprise_id => ent.id, :product_category_id => cat.id) | |
15 | + Product.expects(:solr_batch_add).with([ent]) | |
16 | + prod.save! | |
17 | + end | |
18 | +end | |
19 | + | ... | ... |
... | ... | @@ -0,0 +1,17 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class ProfileTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex articles after saving' do | |
12 | + profile = create(Person, :name => 'something', :user_id => fast_create(User).id) | |
13 | + art = profile.articles.build(:name => 'something') | |
14 | + Profile.expects(:solr_batch_add).with(includes(art)) | |
15 | + profile.save! | |
16 | + end | |
17 | +end | ... | ... |
... | ... | @@ -0,0 +1,18 @@ |
1 | +require 'test_helper' | |
2 | + | |
3 | +class QualifierTest < ActiveSupport::TestCase | |
4 | + def setup | |
5 | + @environment = Environment.default | |
6 | + @environment.enable_plugin(SolrPlugin) | |
7 | + end | |
8 | + | |
9 | + attr_accessor :environment | |
10 | + | |
11 | + should 'reindex products after saving' do | |
12 | + product = mock | |
13 | + Qualifier.any_instance.stubs(:products).returns([product]) | |
14 | + Qualifier.expects(:solr_batch_add).with(includes(product)) | |
15 | + qual = fast_create(Qualifier) | |
16 | + qual.save! | |
17 | + end | |
18 | +end | ... | ... |
test/unit/article_test.rb
... | ... | @@ -357,12 +357,6 @@ class ArticleTest < ActiveSupport::TestCase |
357 | 357 | assert_equal true, a.display_to?(person) |
358 | 358 | end |
359 | 359 | |
360 | - should 'reindex when comments are changed' do | |
361 | - a = Article.new | |
362 | - a.expects(:solr_save) | |
363 | - a.comments_updated | |
364 | - end | |
365 | - | |
366 | 360 | should 'index comments title together with article' do |
367 | 361 | TestSolr.enable |
368 | 362 | owner = create_user('testuser').person | ... | ... |
test/unit/category_test.rb
... | ... | @@ -541,15 +541,4 @@ class CategoryTest < ActiveSupport::TestCase |
541 | 541 | c.save! |
542 | 542 | end |
543 | 543 | |
544 | - should 'reindex articles after saving' do | |
545 | - cat = Category.create!(:name => 'category 1', :environment_id => Environment.default.id) | |
546 | - art = Article.create!(:name => 'something', :profile_id => fast_create(Person).id) | |
547 | - art.add_category cat | |
548 | - cat.reload | |
549 | - | |
550 | - solr_doc = art.to_solr_doc | |
551 | - Article.any_instance.expects(:to_solr_doc).returns(solr_doc) | |
552 | - cat.save! | |
553 | - end | |
554 | - | |
555 | 544 | end | ... | ... |
test/unit/certifier_test.rb
... | ... | @@ -58,14 +58,6 @@ class CertifierTest < ActiveSupport::TestCase |
58 | 58 | assert_equal [first, last], Certifier.all.sort |
59 | 59 | end |
60 | 60 | |
61 | - should 'reindex products after saving' do | |
62 | - product = mock | |
63 | - Certifier.any_instance.stubs(:products).returns([product]) | |
64 | - Certifier.expects(:solr_batch_add).with(includes(product)) | |
65 | - cert = fast_create(Certifier) | |
66 | - cert.save! | |
67 | - end | |
68 | - | |
69 | 61 | should 'set qualifier as self-certified when destroyed' do |
70 | 62 | pq = mock |
71 | 63 | Certifier.any_instance.stubs(:product_qualifiers).returns([pq]) | ... | ... |
test/unit/comment_test.rb
... | ... | @@ -175,27 +175,6 @@ class CommentTest < ActiveSupport::TestCase |
175 | 175 | assert c.errors.invalid?(:email) |
176 | 176 | end |
177 | 177 | |
178 | - should 'notify article to reindex after saving' do | |
179 | - owner = create_user('testuser').person | |
180 | - article = owner.articles.create!(:name => 'test', :body => '...') | |
181 | - | |
182 | - article.expects(:comments_updated) | |
183 | - | |
184 | - c1 = article.comments.new(:title => "A comment", :body => '...', :author => owner) | |
185 | - c1.stubs(:article).returns(article) | |
186 | - c1.save! | |
187 | - end | |
188 | - | |
189 | - should 'notify article to reindex after being removed' do | |
190 | - owner = create_user('testuser').person | |
191 | - article = owner.articles.create!(:name => 'test', :body => '...') | |
192 | - c1 = article.comments.create!(:title => "A comment", :body => '...', :author => owner) | |
193 | - | |
194 | - c1.stubs(:article).returns(article) | |
195 | - article.expects(:comments_updated) | |
196 | - c1.destroy | |
197 | - end | |
198 | - | |
199 | 178 | should 'generate links to comments on images with view set to true' do |
200 | 179 | owner = create_user('testuser').person |
201 | 180 | image = UploadedFile.create!(:profile => owner, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | ... | ... |
test/unit/enterprise_test.rb
... | ... | @@ -443,13 +443,6 @@ class EnterpriseTest < ActiveSupport::TestCase |
443 | 443 | assert_equal product.inputs, enterprise.inputs |
444 | 444 | end |
445 | 445 | |
446 | - should 'reindex when products are changed' do | |
447 | - enterprise = fast_create(Enterprise) | |
448 | - product = fast_create(Product, :enterprise_id => enterprise.id, :product_category_id => @product_category.id) | |
449 | - Product.expects(:solr_batch_add_association).with(product, :enterprise) | |
450 | - product.update_attribute :name, "novo nome" | |
451 | - end | |
452 | - | |
453 | 446 | should "the followed_by? be true only to members" do |
454 | 447 | e = fast_create(Enterprise) |
455 | 448 | e.stubs(:closed?).returns(false) |
... | ... | @@ -480,17 +473,6 @@ class EnterpriseTest < ActiveSupport::TestCase |
480 | 473 | assert_respond_to e, :production_costs |
481 | 474 | end |
482 | 475 | |
483 | - should 'reindex products with full category name after save' do | |
484 | - product = mock | |
485 | - products = mock | |
486 | - product.expects(:category_full_name) | |
487 | - products.stubs(:includes).returns([product]) | |
488 | - Enterprise.any_instance.stubs(:products).returns(products) | |
489 | - Enterprise.expects(:solr_batch_add).with([products]) | |
490 | - ent = fast_create(Enterprise) | |
491 | - ent.save! | |
492 | - end | |
493 | - | |
494 | 476 | should 'return scraps as activities' do |
495 | 477 | person = fast_create(Person) |
496 | 478 | enterprise = fast_create(Enterprise) | ... | ... |
test/unit/product_category_test.rb
... | ... | @@ -36,12 +36,4 @@ class ProductCategoryTest < ActiveSupport::TestCase |
36 | 36 | assert_equal [c11], ProductCategory.menu_categories(c1, nil) |
37 | 37 | end |
38 | 38 | |
39 | - should 'reindex products after save' do | |
40 | - product = mock | |
41 | - ProductCategory.any_instance.stubs(:products).returns([product]) | |
42 | - ProductCategory.expects(:solr_batch_add).with(includes(product)) | |
43 | - pc = fast_create(ProductCategory) | |
44 | - pc.save! | |
45 | - end | |
46 | - | |
47 | 39 | end | ... | ... |
test/unit/product_test.rb
... | ... | @@ -636,14 +636,6 @@ class ProductTest < ActiveSupport::TestCase |
636 | 636 | assert_equal [in_name, in_desc], Product.find_by_contents('bananas')[:results].docs |
637 | 637 | end |
638 | 638 | |
639 | - should 'reindex enterprise after saving' do | |
640 | - ent = fast_create(Enterprise) | |
641 | - cat = fast_create(ProductCategory) | |
642 | - prod = Product.create!(:name => 'something', :enterprise_id => ent.id, :product_category_id => cat.id) | |
643 | - Product.expects(:solr_batch_add).with([ent]) | |
644 | - prod.save! | |
645 | - end | |
646 | - | |
647 | 639 | should 'boost search results that include an image' do |
648 | 640 | TestSolr.enable |
649 | 641 | product_without_image = Product.create!(:name => 'product without image', :product_category => @product_category, | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -1909,13 +1909,6 @@ class ProfileTest < ActiveSupport::TestCase |
1909 | 1909 | assert_equal [in_name], Person.find_by_contents('bananas')[:results].docs |
1910 | 1910 | end |
1911 | 1911 | |
1912 | - should 'reindex articles after saving' do | |
1913 | - profile = create(Person, :name => 'something', :user_id => fast_create(User).id) | |
1914 | - art = profile.articles.build(:name => 'something') | |
1915 | - Profile.expects(:solr_batch_add).with(includes(art)) | |
1916 | - profile.save! | |
1917 | - end | |
1918 | - | |
1919 | 1912 | should 'respond to redirection_after_login' do |
1920 | 1913 | assert_respond_to Profile.new, :redirection_after_login |
1921 | 1914 | end | ... | ... |
test/unit/qualifier_test.rb
... | ... | @@ -60,12 +60,4 @@ class QualifierTest < ActiveSupport::TestCase |
60 | 60 | Qualifier.destroy_all |
61 | 61 | assert_equal [], product1.product_qualifiers(true) |
62 | 62 | end |
63 | - | |
64 | - should 'reindex products after saving' do | |
65 | - product = mock | |
66 | - Qualifier.any_instance.stubs(:products).returns([product]) | |
67 | - Qualifier.expects(:solr_batch_add).with(includes(product)) | |
68 | - qual = fast_create(Qualifier) | |
69 | - qual.save! | |
70 | - end | |
71 | 63 | end | ... | ... |