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 CHANGED
@@ -1,9 +1,22 @@
1
1
  module Believer
2
- VERSION = '0.1'
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
- require 'believer/observer'
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
@@ -15,7 +15,10 @@ module Believer
15
15
  include Counting
16
16
  include DDL
17
17
 
18
- include ::ActiveModel::Observing
18
+ if Believer.features[:active_model_observing]
19
+ include ::ActiveModel::Observing
20
+ end
21
+
19
22
 
20
23
  # The Cassandra row ID
21
24
  attr_accessor :id
@@ -1,36 +1,38 @@
1
- require 'active_model/observing'
1
+ if Believer.features[:active_model_observing]
2
+ require 'active_model/observing'
2
3
 
3
- module Believer
4
+ module Believer
4
5
 
5
- class Observer < ::ActiveModel::Observer
6
+ class Observer < ::ActiveModel::Observer
6
7
 
7
- protected
8
+ protected
8
9
 
9
- def observed_classes
10
- klasses = super
11
- klasses + klasses.map { |klass| klass.descendants }.flatten
12
- end
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
- def define_callbacks(klass)
20
- observer = self
21
- observer_name = observer.class.name.underscore.gsub('/', '__')
15
+ def add_observer!(klass)
16
+ super
17
+ define_callbacks klass
18
+ end
22
19
 
23
- Believer::Callbacks::CALLBACKS.each do |callback|
24
- next unless respond_to?(callback)
25
- callback_meth = :"_notify_#{observer_name}_for_#{callback}"
26
- unless klass.respond_to?(callback_meth)
27
- klass.send(:define_method, callback_meth) do |&block|
28
- observer.update(callback, self, &block)
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
- observe Believer::Base
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
 
@@ -1,5 +1,5 @@
1
1
  module Believer
2
2
  module Version
3
- VERSION = '0.2.8'
3
+ VERSION = '0.2.9'
4
4
  end
5
5
  end
@@ -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
- expect(Believer::Test::TestRunLifeCycle::Destructor.instance.observed_models.size).to eql CREATE_COUNT
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: 7
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 8
10
- version: 0.2.8
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: -2179262306
42
+ hash: 373958899
43
43
  segments:
44
44
  - 1
45
45
  - 1