ayl-rails 0.1.2 → 0.1.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
data/ayl-rails.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ayl-rails"
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["j0hnds@gmail.com"]
12
- s.date = "2011-11-30"
12
+ s.date = "2011-12-03"
13
13
  s.description = "Partner to ayl to allow ActiveRecord after_* hooks to be made asynchronous."
14
14
  s.email = "j0hnds@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -28,6 +28,18 @@ module Ayl
28
28
  class_eval(method_code, __FILE__, __LINE__ - 1)
29
29
  end
30
30
 
31
+ def skip_ayl_hooks
32
+ @ayl_skip_hooks ||= Hash.new(false)
33
+ end
34
+
35
+ def skip_ayl_callback(hook)
36
+ skip_ayl_hooks[hook] = true
37
+ end
38
+
39
+ def skip_ayl_callbacks
40
+ HOOKS.each { | hook | skip_ayl_callback(hook) }
41
+ end
42
+
31
43
  def add_ayl_hook(hook, *args, &block)
32
44
  if args && args.first.is_a?(Symbol)
33
45
  method = args.shift
@@ -66,7 +78,7 @@ module Ayl
66
78
  # So, the self.class target for the ayl_send is because we
67
79
  # need to call the ayl_send method at the singleton level.
68
80
  #
69
- send(hook_key, *args) { |o| self.class.ayl_send_opts(ahook, message_options, o) }
81
+ send(hook_key, *args) { |o| self.class.ayl_send_opts(ahook, message_options, o) unless self.class.skip_ayl_hooks[hook_key] }
70
82
 
71
83
  # This is for the worker's benefit
72
84
  #
@@ -69,6 +69,31 @@ class MessageOptions::MyModel < ActiveRecord::Base
69
69
 
70
70
  end
71
71
 
72
+ module AllCallbacks; end
73
+
74
+ class AllCallbacks::MyModel < ActiveRecord::Base
75
+ ayl_after_save :handle_after_save
76
+
77
+ ayl_after_create :handle_after_create
78
+
79
+ ayl_after_update :handle_after_update
80
+
81
+ private
82
+
83
+ def handle_after_save
84
+ WhatHappened.instance << "handle after save"
85
+ end
86
+
87
+ def handle_after_create
88
+ WhatHappened.instance << "handle after create"
89
+ end
90
+
91
+ def handle_after_update
92
+ WhatHappened.instance << "handle after save"
93
+ end
94
+
95
+ end
96
+
72
97
  module ConditionalCallbacks; end
73
98
 
74
99
  class ConditionalCallbacks::MyModel < ActiveRecord::Base
@@ -155,6 +180,25 @@ describe "Rails Extensions" do
155
180
  WhatHappened.instance.what_ran.should be_nil
156
181
  end
157
182
 
183
+ it "should not allow the callbacks to be run when the skip_ayl_callback is specified" do
184
+ AfterCreate::MyModel.skip_ayl_callback(:after_create)
185
+
186
+ model = AfterCreate::MyModel.new(:name => 'spud')
187
+ model.save.should be_true
188
+
189
+ WhatHappened.instance.what_ran.should_not be_present
190
+ end
191
+
192
+ it "should not allow any callbacks to be run when the skip_ayl_callbacks is specified" do
193
+ AllCallbacks::MyModel.skip_ayl_callbacks
194
+
195
+ model = AllCallbacks::MyModel.new(:name => 'spud')
196
+ model.save.should be_true
197
+ model.update_attribute(:name, 'joan')
198
+
199
+ WhatHappened.instance.what_ran.should_not be_present
200
+ end
201
+
158
202
  end
159
203
 
160
204
  context "when using the instance extensions" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ayl-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-30 00:00:00.000000000Z
12
+ date: 2011-12-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ayl
16
- requirement: &79641030 !ruby/object:Gem::Requirement
16
+ requirement: &89533120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *79641030
24
+ version_requirements: *89533120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &79640730 !ruby/object:Gem::Requirement
27
+ requirement: &89532820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *79640730
35
+ version_requirements: *89532820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &79640380 !ruby/object:Gem::Requirement
38
+ requirement: &89532470 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.3.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *79640380
46
+ version_requirements: *89532470
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &79639970 !ruby/object:Gem::Requirement
49
+ requirement: &89532060 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *79639970
57
+ version_requirements: *89532060
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &79639420 !ruby/object:Gem::Requirement
60
+ requirement: &89531510 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *79639420
68
+ version_requirements: *89531510
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &79639010 !ruby/object:Gem::Requirement
71
+ requirement: &89531100 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *79639010
79
+ version_requirements: *89531100
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sqlite3
82
- requirement: &79609090 !ruby/object:Gem::Requirement
82
+ requirement: &89501540 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *79609090
90
+ version_requirements: *89501540
91
91
  description: Partner to ayl to allow ActiveRecord after_* hooks to be made asynchronous.
92
92
  email: j0hnds@gmail.com
93
93
  executables: []
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  segments:
128
128
  - 0
129
- hash: 1033823859
129
+ hash: 454924691
130
130
  required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements: