believer 0.2.8 → 0.2.9
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/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
|