believer 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/believer.rb +19 -2
- data/lib/believer/base.rb +4 -1
- data/lib/believer/observer.rb +27 -25
- data/lib/believer/test/test_run_life_cycle.rb +9 -5
- data/lib/believer/version.rb +1 -1
- data/spec/believer/test_run_life_cycle_spec.rb +10 -7
- metadata +4 -4
data/lib/believer.rb
CHANGED
@@ -1,9 +1,22 @@
|
|
1
1
|
module Believer
|
2
|
-
|
2
|
+
|
3
|
+
FEATURES = {}
|
4
|
+
|
5
|
+
def self.features
|
6
|
+
FEATURES
|
7
|
+
end
|
8
|
+
|
3
9
|
end
|
4
10
|
|
5
11
|
require 'active_model'
|
6
12
|
|
13
|
+
begin
|
14
|
+
require 'active_model/observing'
|
15
|
+
Believer.features[:active_model_observing] = true
|
16
|
+
rescue LoadError => le
|
17
|
+
Believer.features[:active_model_observing] = false
|
18
|
+
end
|
19
|
+
|
7
20
|
require 'active_support/concern'
|
8
21
|
require 'active_support/core_ext'
|
9
22
|
require 'active_support/core_ext/module/delegation'
|
@@ -43,7 +56,11 @@ require 'believer/callbacks'
|
|
43
56
|
require 'believer/finder_methods'
|
44
57
|
|
45
58
|
require 'believer/log_subscriber'
|
46
|
-
|
59
|
+
|
60
|
+
if Believer.features[:active_model_observing]
|
61
|
+
require 'believer/observer'
|
62
|
+
end
|
63
|
+
|
47
64
|
require 'believer/relation'
|
48
65
|
|
49
66
|
require 'believer/create_table'
|
data/lib/believer/base.rb
CHANGED
data/lib/believer/observer.rb
CHANGED
@@ -1,36 +1,38 @@
|
|
1
|
-
|
1
|
+
if Believer.features[:active_model_observing]
|
2
|
+
require 'active_model/observing'
|
2
3
|
|
3
|
-
module Believer
|
4
|
+
module Believer
|
4
5
|
|
5
|
-
|
6
|
+
class Observer < ::ActiveModel::Observer
|
6
7
|
|
7
|
-
|
8
|
+
protected
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def add_observer!(klass)
|
15
|
-
super
|
16
|
-
define_callbacks klass
|
17
|
-
end
|
10
|
+
def observed_classes
|
11
|
+
klasses = super
|
12
|
+
klasses + klasses.map { |klass| klass.descendants }.flatten
|
13
|
+
end
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
def add_observer!(klass)
|
16
|
+
super
|
17
|
+
define_callbacks klass
|
18
|
+
end
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
def define_callbacks(klass)
|
21
|
+
observer = self
|
22
|
+
observer_name = observer.class.name.underscore.gsub('/', '__')
|
23
|
+
|
24
|
+
Believer::Callbacks::CALLBACKS.each do |callback|
|
25
|
+
next unless respond_to?(callback)
|
26
|
+
callback_meth = :"_notify_#{observer_name}_for_#{callback}"
|
27
|
+
unless klass.respond_to?(callback_meth)
|
28
|
+
klass.send(:define_method, callback_meth) do |&block|
|
29
|
+
observer.update(callback, self, &block)
|
30
|
+
end
|
31
|
+
klass.send(callback, callback_meth)
|
29
32
|
end
|
30
|
-
klass.send(callback, callback_meth)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
end
|
34
|
-
end
|
35
36
|
|
36
|
-
end
|
37
|
+
end
|
38
|
+
end
|
@@ -5,7 +5,10 @@ module Believer
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
Believer::Base.observers = Destructor
|
8
|
+
#Believer::Base.observers = Destructor
|
9
|
+
Believer::Base.after_save do |model|
|
10
|
+
Destructor.instance.after_save(model)
|
11
|
+
end
|
9
12
|
|
10
13
|
after(:each) do
|
11
14
|
Destructor.instance.cleanup
|
@@ -13,8 +16,9 @@ module Believer
|
|
13
16
|
end
|
14
17
|
|
15
18
|
# Detroys all CqlRecord::Base instances created
|
16
|
-
class Destructor < Believer::Observer
|
17
|
-
|
19
|
+
class Destructor# < Believer::Observer
|
20
|
+
include Singleton
|
21
|
+
# observe Believer::Base
|
18
22
|
|
19
23
|
def cleanup
|
20
24
|
unless @observed_models.nil? || @observed_models.empty?
|
@@ -30,12 +34,12 @@ module Believer
|
|
30
34
|
end
|
31
35
|
|
32
36
|
def observed_models
|
33
|
-
return @observed_models.dup unless @observed_models.nil?
|
37
|
+
return @observed_models.dup.to_a unless @observed_models.nil?
|
34
38
|
[]
|
35
39
|
end
|
36
40
|
|
37
41
|
def after_save(model)
|
38
|
-
@observed_models ||=
|
42
|
+
@observed_models ||= Set.new
|
39
43
|
@observed_models << model
|
40
44
|
end
|
41
45
|
|
data/lib/believer/version.rb
CHANGED
@@ -25,14 +25,9 @@ describe Believer::Test::TestRunLifeCycle do
|
|
25
25
|
expect(@monitor.kill_count).to eql @created.size
|
26
26
|
end
|
27
27
|
|
28
|
-
after :each do
|
29
|
-
end
|
30
|
-
|
31
|
-
before :each do
|
32
|
-
end
|
33
|
-
|
34
28
|
it "should clean all created objects, even after a fail" do
|
35
|
-
|
29
|
+
puts "Observed models: \n#{Believer::Test::TestRunLifeCycle::Destructor.instance.observed_models.join("\n")}"
|
30
|
+
expect(Believer::Test::TestRunLifeCycle::Destructor.instance.observed_models.size).to eql Fly.create_count
|
36
31
|
end
|
37
32
|
|
38
33
|
class Monitor
|
@@ -52,6 +47,14 @@ describe Believer::Test::TestRunLifeCycle do
|
|
52
47
|
primary_key :name
|
53
48
|
|
54
49
|
attr_accessor :kill_monitor
|
50
|
+
cattr_accessor :create_count
|
51
|
+
|
52
|
+
def initialize(attrs)
|
53
|
+
super
|
54
|
+
self.class.create_count ||= 0
|
55
|
+
self.class.create_count += 1
|
56
|
+
puts "Created #{self.class.create_count}"
|
57
|
+
end
|
55
58
|
|
56
59
|
before_destroy do
|
57
60
|
self.kill_monitor.destroyed
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: believer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 9
|
10
|
+
version: 0.2.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jerphaes van Blijenburgh
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
hash:
|
42
|
+
hash: 373958899
|
43
43
|
segments:
|
44
44
|
- 1
|
45
45
|
- 1
|