Commit d2e306feb50c08fb00deb1b8e9c216dcb5be0ea2

Authored by Victor Costa
1 parent f323c51d

people_block: fix cache expiration of members_block

fixes #11
app/models/block.rb
@@ -192,7 +192,7 @@ class Block < ActiveRecord::Base @@ -192,7 +192,7 @@ class Block < ActiveRecord::Base
192 192
193 # Override in your subclasses. 193 # Override in your subclasses.
194 # Define which events and context should cause the block cache to expire 194 # Define which events and context should cause the block cache to expire
195 - # Possible events are: :article, :profile, :friendship, :category 195 + # Possible events are: :article, :profile, :friendship, :category, :role_assignment
196 # Possible contexts are: :profile, :environment 196 # Possible contexts are: :profile, :environment
197 def self.expire_on 197 def self.expire_on
198 { 198 {
app/sweepers/role_assignment_sweeper.rb
@@ -14,19 +14,21 @@ protected @@ -14,19 +14,21 @@ protected
14 14
15 def expire_caches(role_assignment) 15 def expire_caches(role_assignment)
16 expire_cache(role_assignment.accessor) 16 expire_cache(role_assignment.accessor)
17 - expire_cache(role_assignment.resource) if role_assignment.resource.respond_to?(:cache_keys) 17 + expire_cache(role_assignment.resource) if role_assignment.resource.kind_of?(Profile)
18 end 18 end
19 19
20 def expire_cache(profile) 20 def expire_cache(profile)
21 per_page = Noosfero::Constants::PROFILE_PER_PAGE 21 per_page = Noosfero::Constants::PROFILE_PER_PAGE
22 - profile.cache_keys(:per_page => per_page).each { |ck|  
23 - expire_timeout_fragment(ck)  
24 - } 22 +
  23 + profile.cache_keys(:per_page => per_page).each { |ck| expire_timeout_fragment(ck) }
  24 + expire_timeout_fragment(profile.members_cache_key(:per_page => per_page))
25 25
26 profile.blocks_to_expire_cache.each { |block| 26 profile.blocks_to_expire_cache.each { |block|
27 blocks = profile.blocks.select{|b| b.kind_of?(block)} 27 blocks = profile.blocks.select{|b| b.kind_of?(block)}
28 BlockSweeper.expire_blocks(blocks) 28 BlockSweeper.expire_blocks(blocks)
29 } 29 }
  30 +
  31 + expire_blocks_cache(profile, [:role_assignment])
30 end 32 end
31 33
32 end 34 end
plugins/people_block/lib/members_block.rb
@@ -47,4 +47,8 @@ class MembersBlock < PeopleBlockBase @@ -47,4 +47,8 @@ class MembersBlock < PeopleBlockBase
47 } 47 }
48 end 48 end
49 49
  50 + def self.expire_on
  51 + {:profile => [:role_assignment]}
  52 + end
  53 +
50 end 54 end