Commit 4bd17eba2a498536fae248b0a0ac5362da4a4b3a

Authored by AntonioTerceiro
1 parent 2ef3626d

ActionItem154: adding a workaround for the fact that after_create callbacks are …

…not being inherited by subclasses in my development environment but are inherited in the server environment. Very weird.


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1412 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/organization.rb
@@ -53,7 +53,7 @@ class Organization < Profile @@ -53,7 +53,7 @@ class Organization < Profile
53 true 53 true
54 end 54 end
55 55
56 - after_create :create_default_set_of_blocks_for_organization 56 + hacked_after_create :create_default_set_of_blocks_for_organization
57 def create_default_set_of_blocks_for_organization 57 def create_default_set_of_blocks_for_organization
58 # "main" area 58 # "main" area
59 # nothing ..., MainBlock is already there 59 # nothing ..., MainBlock is already there
app/models/person.rb
@@ -59,7 +59,7 @@ class Person < Profile @@ -59,7 +59,7 @@ class Person < Profile
59 59
60 # FIXME this is *weird*, because this class is not inheriting the callback 60 # FIXME this is *weird*, because this class is not inheriting the callback
61 # from Profile !!! 61 # from Profile !!!
62 - after_create :create_default_set_of_boxes_for_person 62 + hacked_after_create :create_default_set_of_boxes_for_person
63 def create_default_set_of_boxes_for_person 63 def create_default_set_of_boxes_for_person
64 3.times do 64 3.times do
65 self.boxes << Box.new 65 self.boxes << Box.new
@@ -82,6 +82,6 @@ class Person &lt; Profile @@ -82,6 +82,6 @@ class Person &lt; Profile
82 82
83 # FIXME this is *weird*, because this class is not inheriting the callbacks 83 # FIXME this is *weird*, because this class is not inheriting the callbacks
84 before_create :set_default_environment 84 before_create :set_default_environment
85 - after_create :insert_default_homepage_and_feed 85 + hacked_after_create :insert_default_homepage_and_feed
86 86
87 end 87 end
app/models/profile.rb
@@ -96,7 +96,7 @@ class Profile &lt; ActiveRecord::Base @@ -96,7 +96,7 @@ class Profile &lt; ActiveRecord::Base
96 end 96 end
97 97
98 # registar callback for creating boxes after the object is created. 98 # registar callback for creating boxes after the object is created.
99 - after_create :create_default_set_of_boxes 99 + hacked_after_create :create_default_set_of_boxes
100 100
101 # creates the initial set of boxes when the profile is created. Can be 101 # creates the initial set of boxes when the profile is created. Can be
102 # overriden for each subclass to create a custom set of boxes for its 102 # overriden for each subclass to create a custom set of boxes for its
@@ -236,7 +236,7 @@ class Profile &lt; ActiveRecord::Base @@ -236,7 +236,7 @@ class Profile &lt; ActiveRecord::Base
236 false 236 false
237 end 237 end
238 238
239 - after_create :insert_default_homepage_and_feed 239 + hacked_after_create :insert_default_homepage_and_feed
240 def insert_default_homepage_and_feed 240 def insert_default_homepage_and_feed
241 hp = self.articles.build(:name => _('Home page'), :body => _("<h1>%s's home page</h1> <p>This is a default homepage created for %s. It can be changed though the control panel.</p>") % [ self.name, self.name]) 241 hp = self.articles.build(:name => _('Home page'), :body => _("<h1>%s's home page</h1> <p>This is a default homepage created for %s. It can be changed though the control panel.</p>") % [ self.name, self.name])
242 hp.save! 242 hp.save!
config/environment.rb
@@ -84,6 +84,7 @@ require &#39;acts_as_filesystem&#39; @@ -84,6 +84,7 @@ require &#39;acts_as_filesystem&#39;
84 require 'acts_as_searchable' 84 require 'acts_as_searchable'
85 require 'acts_as_having_boxes' 85 require 'acts_as_having_boxes'
86 require 'acts_as_having_settings' 86 require 'acts_as_having_settings'
  87 +require 'hacked_after_create'
87 88
88 # to the hell, I want all my models loaded before the application run anything 89 # to the hell, I want all my models loaded before the application run anything
89 Dir.glob("#{RAILS_ROOT}/app/models/*.rb").each do |model| 90 Dir.glob("#{RAILS_ROOT}/app/models/*.rb").each do |model|
lib/hacked_after_create.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +class << ActiveRecord::Base
  2 + # it seems that in some enviroments after_create hook is not inherited. This
  3 + # method calls after_create only if the callback is not already there.
  4 + def hacked_after_create(sym)
  5 + current = after_create
  6 + if !current.include?(sym)
  7 + current = after_create(sym)
  8 + end
  9 + current
  10 + end
  11 +end