rails-observers 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ebf1dea2a2c82e54123428320e6685c5765da02
4
+ data.tar.gz: 52ef78d1ccb52ed81cd43e91d582b18976f18123
5
+ SHA512:
6
+ metadata.gz: c2465a6f154cd1de2b3439333d2abc2719db0dd0a3294779e09df4caf31f37b66fe61a4ae0622a558011bd6e96a383a243814ee7afee059649aac335cbd24f7f
7
+ data.tar.gz: ee0dd0aca9d35994d059e92341861319ca4aab3aa00ae104b19e28d94a646798163fb926f00fbe5e5eb177bf1598d331e4e3ceb19eda161323fc0b151c1a4a02
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .ruby-version
data/Gemfile CHANGED
@@ -3,9 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in active_record-observers.gemspec
4
4
  gemspec
5
5
 
6
- gem 'activerecord-deprecated_finders', github: 'rails/activerecord-deprecated_finders'
7
- gem 'journey', github: 'rails/journey'
8
-
9
- gem 'rails', github: 'rails/rails', branch: 'master'
6
+ gem 'activerecord-deprecated_finders'
10
7
 
11
8
  gem 'mocha', require: false
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ [![Build Status](https://secure.travis-ci.org/rails/rails-observers.png)](https://travis-ci.org/rails/rails-observers)
1
2
  # Rails::Observers
2
3
 
3
4
  Rails Observers (removed from core in Rails 4.0)
@@ -55,6 +56,17 @@ end
55
56
 
56
57
  This Observer uses logger to log when specific callbacks are triggered.
57
58
 
59
+ Please note that observers are called in the order that they are defined. That means that callbacks in an observer
60
+ will always be called *after* callbacks defined in the model itself. Likewise, `has_one` and `has_many`
61
+ use callbacks to enforce `:dependent => :destroy`. Therefore, associated records will be destroyed before
62
+ the observer's `before_destory` is called.
63
+
64
+ For an observer to be active, it must be registered first. This can be done by adding the following line into the `application.rb`:
65
+
66
+ config.active_record.observers = :contact_observer
67
+
68
+ Obeservers can also be registered on an environment-specific basis by simply using the corresponding environment's configuration file instead of `application.rb`.
69
+
58
70
  ### Action Controller Sweeper
59
71
 
60
72
  Sweepers are the terminators of the caching world and responsible for expiring caches when model objects change.
@@ -1,34 +1,2 @@
1
- require 'rails'
1
+ require 'rails/observers/railtie' if defined? Rails
2
2
  require 'rails/observers/version'
3
-
4
- module Rails
5
- module Observers
6
- class Railtie < ::Rails::Railtie
7
- initializer "active_record.observer", :before => "active_record.set_configs" do |app|
8
- ActiveSupport.on_load(:active_record) do
9
- require "rails/observers/activerecord/active_record"
10
-
11
- if observers = app.config.respond_to?(:active_record) && app.config.active_record.delete(:observers)
12
- send :observers=, observers
13
- end
14
- end
15
- end
16
-
17
- initializer "action_controller.caching.sweppers" do
18
- ActiveSupport.on_load(:action_controller) do
19
- require "rails/observers/action_controller/caching"
20
- end
21
- end
22
-
23
- config.after_initialize do |app|
24
- ActiveSupport.on_load(:active_record) do
25
- ActiveRecord::Base.instantiate_observers
26
-
27
- ActionDispatch::Reloader.to_prepare do
28
- ActiveRecord::Base.instantiate_observers
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -7,6 +7,6 @@ module ActionController #:nodoc:
7
7
  autoload :Sweeping, 'rails/observers/action_controller/caching/sweeping'
8
8
  end
9
9
 
10
- include Sweeping if defined?(ActiveRecord)
10
+ ActionController::Base.extend Sweeping::ClassMethods if defined?(ActiveRecord)
11
11
  end
12
12
  end
@@ -30,8 +30,6 @@ module ActionController #:nodoc:
30
30
  # cache_sweeper OpenBar::Sweeper, :only => [ :edit, :destroy, :share ]
31
31
  # end
32
32
  module Sweeping
33
- extend ActiveSupport::Concern
34
-
35
33
  module ClassMethods #:nodoc:
36
34
  def cache_sweeper(*sweepers)
37
35
  configuration = sweepers.extract_options!
@@ -0,0 +1 @@
1
+ require 'rails/observers/active_model/active_model'
@@ -0,0 +1,33 @@
1
+ require 'rails/railtie'
2
+
3
+ module Rails
4
+ module Observers
5
+ class Railtie < ::Rails::Railtie
6
+ initializer "active_record.observer", :before => "active_record.set_configs" do |app|
7
+ ActiveSupport.on_load(:active_record) do
8
+ require "rails/observers/activerecord/active_record"
9
+
10
+ if observers = app.config.respond_to?(:active_record) && app.config.active_record.delete(:observers)
11
+ send :observers=, observers
12
+ end
13
+ end
14
+ end
15
+
16
+ initializer "action_controller.caching.sweepers" do
17
+ ActiveSupport.on_load(:action_controller) do
18
+ require "rails/observers/action_controller/caching"
19
+ end
20
+ end
21
+
22
+ config.after_initialize do |app|
23
+ ActiveSupport.on_load(:active_record) do
24
+ ActiveRecord::Base.instantiate_observers
25
+
26
+ ActionDispatch::Reloader.to_prepare do
27
+ ActiveRecord::Base.instantiate_observers
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module Observers
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -10,17 +10,17 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "https://github.com/rails/rails-observers"
11
11
  s.version = Rails::Observers::VERSION
12
12
 
13
- s.files = [".gitignore",".travis.yml","Gemfile","LICENSE","README.md","Rakefile","lib/generators/active_record/observer/observer_generator.rb","lib/generators/active_record/observer/templates/observer.rb","lib/generators/rails/observer/USAGE","lib/generators/rails/observer/observer_generator.rb","lib/generators/test_unit/observer/observer_generator.rb","lib/generators/test_unit/observer/templates/unit_test.rb","lib/rails-observers.rb","lib/rails/observers/action_controller/caching.rb","lib/rails/observers/action_controller/caching/sweeping.rb","lib/rails/observers/active_model/active_model.rb","lib/rails/observers/active_model/observer_array.rb","lib/rails/observers/active_model/observing.rb","lib/rails/observers/activerecord/active_record.rb","lib/rails/observers/activerecord/base.rb","lib/rails/observers/activerecord/observer.rb","lib/rails/observers/version.rb","rails-observers.gemspec","rails-observers.gemspec.erb","test/configuration_test.rb","test/console_test.rb","test/fixtures/developers.yml","test/fixtures/minimalistics.yml","test/fixtures/topics.yml","test/generators/generators_test_helper.rb","test/generators/namespaced_generators_test.rb","test/generators/observer_generator_test.rb","test/helper.rb","test/isolation/abstract_unit.rb","test/lifecycle_test.rb","test/models/observers.rb","test/observer_array_test.rb","test/observing_test.rb","test/rake_test.rb","test/sweeper_test.rb","test/transaction_callbacks_test.rb"]
13
+ s.files = [".gitignore",".travis.yml","Gemfile","LICENSE","README.md","Rakefile","lib/generators/active_record/observer/observer_generator.rb","lib/generators/active_record/observer/templates/observer.rb","lib/generators/rails/observer/USAGE","lib/generators/rails/observer/observer_generator.rb","lib/generators/test_unit/observer/observer_generator.rb","lib/generators/test_unit/observer/templates/unit_test.rb","lib/rails-observers.rb","lib/rails/observers/action_controller/caching.rb","lib/rails/observers/action_controller/caching/sweeping.rb","lib/rails/observers/active_model.rb","lib/rails/observers/active_model/active_model.rb","lib/rails/observers/active_model/observer_array.rb","lib/rails/observers/active_model/observing.rb","lib/rails/observers/activerecord/active_record.rb","lib/rails/observers/activerecord/base.rb","lib/rails/observers/activerecord/observer.rb","lib/rails/observers/railtie.rb","lib/rails/observers/version.rb","rails-observers.gemspec","rails-observers.gemspec.erb","test/configuration_test.rb","test/console_test.rb","test/fixtures/developers.yml","test/fixtures/minimalistics.yml","test/fixtures/topics.yml","test/generators/generators_test_helper.rb","test/generators/namespaced_generators_test.rb","test/generators/observer_generator_test.rb","test/helper.rb","test/isolation/abstract_unit.rb","test/lifecycle_test.rb","test/models/observers.rb","test/observer_array_test.rb","test/observing_test.rb","test/rake_test.rb","test/sweeper_test.rb","test/transaction_callbacks_test.rb"]
14
14
  s.test_files = ["test/configuration_test.rb","test/console_test.rb","test/fixtures/developers.yml","test/fixtures/minimalistics.yml","test/fixtures/topics.yml","test/generators/generators_test_helper.rb","test/generators/namespaced_generators_test.rb","test/generators/observer_generator_test.rb","test/helper.rb","test/isolation/abstract_unit.rb","test/lifecycle_test.rb","test/models/observers.rb","test/observer_array_test.rb","test/observing_test.rb","test/rake_test.rb","test/sweeper_test.rb","test/transaction_callbacks_test.rb"]
15
15
  s.executables = []
16
16
  s.require_paths = ["lib"]
17
17
 
18
- s.add_dependency 'railties', '~> 4.0.0.beta'
18
+ s.add_dependency 'activemodel', '~> 4.0'
19
19
 
20
20
  s.add_development_dependency 'minitest', '>= 3'
21
- s.add_development_dependency 'activerecord', '~> 4.0.0.beta'
22
- s.add_development_dependency 'activemodel', '~> 4.0.0.beta'
23
- s.add_development_dependency 'actionmailer', '~> 4.0.0.beta'
24
- s.add_development_dependency 'actionpack', '~> 4.0.0.beta'
21
+ s.add_development_dependency 'railties', '~> 4.0'
22
+ s.add_development_dependency 'activerecord', '~> 4.0'
23
+ s.add_development_dependency 'actionmailer', '~> 4.0'
24
+ s.add_development_dependency 'actionpack', '~> 4.0'
25
25
  s.add_development_dependency 'sqlite3', '~> 1.3'
26
26
  end
@@ -15,12 +15,12 @@ Gem::Specification.new do |s|
15
15
  s.executables = [<%= executables.map(&:inspect).join ',' %>]
16
16
  s.require_paths = ["lib"]
17
17
 
18
- s.add_dependency 'railties', '~> 4.0.0.beta'
18
+ s.add_dependency 'activemodel', '~> 4.0'
19
19
 
20
20
  s.add_development_dependency 'minitest', '>= 3'
21
- s.add_development_dependency 'activerecord', '~> 4.0.0.beta'
22
- s.add_development_dependency 'activemodel', '~> 4.0.0.beta'
23
- s.add_development_dependency 'actionmailer', '~> 4.0.0.beta'
24
- s.add_development_dependency 'actionpack', '~> 4.0.0.beta'
21
+ s.add_development_dependency 'railties', '~> 4.0'
22
+ s.add_development_dependency 'activerecord', '~> 4.0'
23
+ s.add_development_dependency 'actionmailer', '~> 4.0'
24
+ s.add_development_dependency 'actionpack', '~> 4.0'
25
25
  s.add_development_dependency 'sqlite3', '~> 1.3'
26
26
  end
@@ -154,9 +154,9 @@ class TransactionCallbacksTest < ActiveRecord::TestCase
154
154
  end
155
155
 
156
156
  def test_call_after_rollback_when_commit_fails
157
- @first.connection.class.send(:alias_method, :real_method_commit_db_transaction, :commit_db_transaction)
157
+ TopicWithCallbacks.connection.class.send(:alias_method, :real_method_commit_db_transaction, :commit_db_transaction)
158
158
  begin
159
- @first.connection.class.class_eval do
159
+ TopicWithCallbacks.connection.class.class_eval do
160
160
  def commit_db_transaction; raise "boom!"; end
161
161
  end
162
162
 
@@ -166,8 +166,8 @@ class TransactionCallbacksTest < ActiveRecord::TestCase
166
166
  assert !@first.save rescue nil
167
167
  assert_equal [:after_rollback], @first.history
168
168
  ensure
169
- @first.connection.class.send(:remove_method, :commit_db_transaction)
170
- @first.connection.class.send(:alias_method, :commit_db_transaction, :real_method_commit_db_transaction)
169
+ TopicWithCallbacks.connection.class.send(:remove_method, :commit_db_transaction)
170
+ TopicWithCallbacks.connection.class.send(:alias_method, :commit_db_transaction, :real_method_commit_db_transaction)
171
171
  end
172
172
  end
173
173
 
@@ -244,35 +244,3 @@ class TransactionCallbacksTest < ActiveRecord::TestCase
244
244
  assert_equal [:after_rollback], @second.history
245
245
  end
246
246
  end
247
-
248
-
249
- class SaveFromAfterCommitBlockTest < ActiveRecord::TestCase
250
- self.use_transactional_fixtures = false
251
-
252
- class TopicWithSaveInCallback < ActiveRecord::Base
253
- self.table_name = :topics
254
- after_commit :cache_topic, :on => :create
255
- after_commit :call_update, :on => :update
256
- attr_accessor :cached, :record_updated
257
-
258
- def call_update
259
- self.record_updated = true
260
- end
261
-
262
- def cache_topic
263
- unless cached
264
- self.cached = true
265
- self.save
266
- else
267
- self.cached = false
268
- end
269
- end
270
- end
271
-
272
- def test_after_commit_in_save
273
- topic = TopicWithSaveInCallback.new()
274
- topic.save
275
- assert_equal true, topic.cached
276
- assert_equal true, topic.record_updated
277
- end
278
- end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-observers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Rafael Mendonça França
@@ -10,108 +9,95 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2012-11-29 00:00:00.000000000 Z
12
+ date: 2013-07-19 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- name: railties
15
+ name: activemodel
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
22
- version: 4.0.0.beta
20
+ version: '4.0'
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
30
- version: 4.0.0.beta
27
+ version: '4.0'
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: minitest
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: '3'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: '3'
47
42
  - !ruby/object:Gem::Dependency
48
- name: activerecord
43
+ name: railties
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - ~>
53
47
  - !ruby/object:Gem::Version
54
- version: 4.0.0.beta
48
+ version: '4.0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - ~>
61
54
  - !ruby/object:Gem::Version
62
- version: 4.0.0.beta
55
+ version: '4.0'
63
56
  - !ruby/object:Gem::Dependency
64
- name: activemodel
57
+ name: activerecord
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
70
- version: 4.0.0.beta
62
+ version: '4.0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
78
- version: 4.0.0.beta
69
+ version: '4.0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: actionmailer
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - ~>
85
75
  - !ruby/object:Gem::Version
86
- version: 4.0.0.beta
76
+ version: '4.0'
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - ~>
93
82
  - !ruby/object:Gem::Version
94
- version: 4.0.0.beta
83
+ version: '4.0'
95
84
  - !ruby/object:Gem::Dependency
96
85
  name: actionpack
97
86
  requirement: !ruby/object:Gem::Requirement
98
- none: false
99
87
  requirements:
100
88
  - - ~>
101
89
  - !ruby/object:Gem::Version
102
- version: 4.0.0.beta
90
+ version: '4.0'
103
91
  type: :development
104
92
  prerelease: false
105
93
  version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
94
  requirements:
108
95
  - - ~>
109
96
  - !ruby/object:Gem::Version
110
- version: 4.0.0.beta
97
+ version: '4.0'
111
98
  - !ruby/object:Gem::Dependency
112
99
  name: sqlite3
113
100
  requirement: !ruby/object:Gem::Requirement
114
- none: false
115
101
  requirements:
116
102
  - - ~>
117
103
  - !ruby/object:Gem::Version
@@ -119,7 +105,6 @@ dependencies:
119
105
  type: :development
120
106
  prerelease: false
121
107
  version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
108
  requirements:
124
109
  - - ~>
125
110
  - !ruby/object:Gem::Version
@@ -147,12 +132,14 @@ files:
147
132
  - lib/rails-observers.rb
148
133
  - lib/rails/observers/action_controller/caching.rb
149
134
  - lib/rails/observers/action_controller/caching/sweeping.rb
135
+ - lib/rails/observers/active_model.rb
150
136
  - lib/rails/observers/active_model/active_model.rb
151
137
  - lib/rails/observers/active_model/observer_array.rb
152
138
  - lib/rails/observers/active_model/observing.rb
153
139
  - lib/rails/observers/activerecord/active_record.rb
154
140
  - lib/rails/observers/activerecord/base.rb
155
141
  - lib/rails/observers/activerecord/observer.rb
142
+ - lib/rails/observers/railtie.rb
156
143
  - lib/rails/observers/version.rb
157
144
  - rails-observers.gemspec
158
145
  - rails-observers.gemspec.erb
@@ -175,27 +162,26 @@ files:
175
162
  - test/transaction_callbacks_test.rb
176
163
  homepage: https://github.com/rails/rails-observers
177
164
  licenses: []
165
+ metadata: {}
178
166
  post_install_message:
179
167
  rdoc_options: []
180
168
  require_paths:
181
169
  - lib
182
170
  required_ruby_version: !ruby/object:Gem::Requirement
183
- none: false
184
171
  requirements:
185
- - - ! '>='
172
+ - - '>='
186
173
  - !ruby/object:Gem::Version
187
174
  version: '0'
188
175
  required_rubygems_version: !ruby/object:Gem::Requirement
189
- none: false
190
176
  requirements:
191
- - - ! '>='
177
+ - - '>='
192
178
  - !ruby/object:Gem::Version
193
179
  version: '0'
194
180
  requirements: []
195
181
  rubyforge_project:
196
- rubygems_version: 1.8.23
182
+ rubygems_version: 2.0.2
197
183
  signing_key:
198
- specification_version: 3
184
+ specification_version: 4
199
185
  summary: ActiveModel::Observer, ActiveRecord::Observer and ActionController::Caching::Sweeper
200
186
  extracted from Rails.
201
187
  test_files: