mongomodel 0.4.8 → 0.4.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/Appraisals +34 -14
- data/Gemfile +1 -1
- data/bin/console +6 -5
- data/gemfiles/mongo_mapper.gemfile +3 -3
- data/gemfiles/mongoid.gemfile +3 -3
- data/gemfiles/rails-3.1.gemfile +3 -3
- data/gemfiles/rails-3.2.gemfile +3 -3
- data/gemfiles/rails-4-observers.gemfile +13 -0
- data/gemfiles/rails-4-protected-attributes.gemfile +13 -0
- data/gemfiles/rails-4.gemfile +2 -1
- data/lib/mongomodel.rb +13 -1
- data/lib/mongomodel/concerns/attribute_methods/protected.rb +17 -13
- data/lib/mongomodel/concerns/observing.rb +35 -35
- data/lib/mongomodel/document/persistence.rb +1 -1
- data/lib/mongomodel/embedded_document.rb +1 -1
- data/lib/mongomodel/support/types/date_time.rb +1 -1
- data/lib/mongomodel/version.rb +1 -1
- data/mongomodel.gemspec +1 -1
- data/spec/mongomodel/concerns/attribute_methods/protected_spec.rb +62 -60
- data/spec/mongomodel/concerns/observing_spec.rb +33 -31
- data/spec/spec_helper.rb +1 -1
- metadata +7 -5
data/Appraisals
CHANGED
@@ -1,26 +1,46 @@
|
|
1
|
+
RAILS_3_1 = "3.1.10"
|
2
|
+
RAILS_3_2 = "3.2.11"
|
3
|
+
|
1
4
|
appraise "rails-3.1" do
|
2
|
-
gem "activesupport",
|
3
|
-
gem "activemodel",
|
5
|
+
gem "activesupport", RAILS_3_1
|
6
|
+
gem "activemodel", RAILS_3_1
|
4
7
|
end
|
5
8
|
|
6
9
|
appraise "rails-3.2" do
|
7
|
-
gem "activesupport",
|
8
|
-
gem "activemodel",
|
10
|
+
gem "activesupport", RAILS_3_2
|
11
|
+
gem "activemodel", RAILS_3_2
|
9
12
|
end
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
14
|
+
if RUBY_VERSION >= "1.9"
|
15
|
+
appraise "rails-4" do
|
16
|
+
gem "activesupport", :git => "https://github.com/rails/rails.git"
|
17
|
+
gem "activemodel", :git => "https://github.com/rails/rails.git"
|
18
|
+
gem "journey", :git => "https://github.com/rails/journey.git"
|
19
|
+
end
|
20
|
+
|
21
|
+
appraise "rails-4-protected-attributes" do
|
22
|
+
gem "activesupport", :git => "https://github.com/rails/rails.git"
|
23
|
+
gem "activemodel", :git => "https://github.com/rails/rails.git"
|
24
|
+
gem "protected_attributes", :git=>"https://github.com/rails/protected_attributes.git"
|
25
|
+
gem "journey", :git => "https://github.com/rails/journey.git"
|
26
|
+
end
|
27
|
+
|
28
|
+
appraise "rails-4-observers" do
|
29
|
+
gem "activesupport", :git => "https://github.com/rails/rails.git"
|
30
|
+
gem "activemodel", :git => "https://github.com/rails/rails.git"
|
31
|
+
gem "rails-observers", :git => "https://github.com/rails/rails-observers.git"
|
32
|
+
gem "journey", :git => "https://github.com/rails/journey.git"
|
33
|
+
end
|
15
34
|
|
16
|
-
appraise "mongoid" do
|
17
|
-
|
18
|
-
|
19
|
-
|
35
|
+
appraise "mongoid" do
|
36
|
+
gem "mongoid"
|
37
|
+
gem "activesupport", RAILS_3_2
|
38
|
+
gem "activemodel", RAILS_3_2
|
39
|
+
end
|
20
40
|
end
|
21
41
|
|
22
42
|
appraise "mongo_mapper" do
|
23
43
|
gem "mongo_mapper"
|
24
|
-
gem "activesupport",
|
25
|
-
gem "activemodel",
|
44
|
+
gem "activesupport", RAILS_3_2
|
45
|
+
gem "activemodel", RAILS_3_2
|
26
46
|
end
|
data/Gemfile
CHANGED
data/bin/console
CHANGED
@@ -3,15 +3,16 @@
|
|
3
3
|
puts "Loading MongoModel sandbox..."
|
4
4
|
|
5
5
|
require "rubygems"
|
6
|
-
require "bundler
|
7
|
-
Bundler.
|
8
|
-
|
9
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
6
|
+
require "bundler"
|
7
|
+
Bundler.setup
|
10
8
|
|
11
9
|
require 'irb'
|
12
10
|
require 'irb/completion'
|
13
11
|
|
14
|
-
|
12
|
+
require "mongomodel"
|
13
|
+
|
14
|
+
logger = defined?(ActiveSupport::Logger) ? ActiveSupport::Logger : ActiveSupport::BufferedLogger
|
15
|
+
MongoModel.logger = logger.new(STDERR)
|
15
16
|
|
16
17
|
IRB.setup(nil)
|
17
18
|
|
@@ -3,10 +3,10 @@
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", "~> 0.3.6"
|
6
|
-
gem "bson_ext", "~> 1.
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
7
|
gem "tzinfo"
|
8
8
|
gem "mongo_mapper"
|
9
|
-
gem "activesupport", "3.2.
|
10
|
-
gem "activemodel", "3.2.
|
9
|
+
gem "activesupport", "3.2.11"
|
10
|
+
gem "activemodel", "3.2.11"
|
11
11
|
|
12
12
|
gemspec :path=>"../"
|
data/gemfiles/mongoid.gemfile
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", "~> 0.3.6"
|
6
|
-
gem "bson_ext", "~> 1.
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
7
|
gem "tzinfo"
|
8
8
|
gem "mongoid"
|
9
|
-
gem "activesupport", "3.2.
|
10
|
-
gem "activemodel", "3.2.
|
9
|
+
gem "activesupport", "3.2.11"
|
10
|
+
gem "activemodel", "3.2.11"
|
11
11
|
|
12
12
|
gemspec :path=>"../"
|
data/gemfiles/rails-3.1.gemfile
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", "~> 0.3.6"
|
6
|
-
gem "bson_ext", "~> 1.
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
7
|
gem "tzinfo"
|
8
|
-
gem "activesupport", "3.1.
|
9
|
-
gem "activemodel", "3.1.
|
8
|
+
gem "activesupport", "3.1.10"
|
9
|
+
gem "activemodel", "3.1.10"
|
10
10
|
|
11
11
|
gemspec :path=>"../"
|
data/gemfiles/rails-3.2.gemfile
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", "~> 0.3.6"
|
6
|
-
gem "bson_ext", "~> 1.
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
7
|
gem "tzinfo"
|
8
|
-
gem "activesupport", "3.2.
|
9
|
-
gem "activemodel", "3.2.
|
8
|
+
gem "activesupport", "3.2.11"
|
9
|
+
gem "activemodel", "3.2.11"
|
10
10
|
|
11
11
|
gemspec :path=>"../"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal", "~> 0.3.6"
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
|
+
gem "tzinfo"
|
8
|
+
gem "activesupport", :git=>"https://github.com/rails/rails.git"
|
9
|
+
gem "activemodel", :git=>"https://github.com/rails/rails.git"
|
10
|
+
gem "rails-observers", :git=>"https://github.com/rails/rails-observers.git"
|
11
|
+
gem "journey", :git=>"https://github.com/rails/journey.git"
|
12
|
+
|
13
|
+
gemspec :path=>"../"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal", "~> 0.3.6"
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
|
+
gem "tzinfo"
|
8
|
+
gem "activesupport", :git=>"https://github.com/rails/rails.git"
|
9
|
+
gem "activemodel", :git=>"https://github.com/rails/rails.git"
|
10
|
+
gem "protected_attributes", :git=>"https://github.com/rails/protected_attributes.git"
|
11
|
+
gem "journey", :git=>"https://github.com/rails/journey.git"
|
12
|
+
|
13
|
+
gemspec :path=>"../"
|
data/gemfiles/rails-4.gemfile
CHANGED
@@ -3,9 +3,10 @@
|
|
3
3
|
source "http://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", "~> 0.3.6"
|
6
|
-
gem "bson_ext", "~> 1.
|
6
|
+
gem "bson_ext", "~> 1.8"
|
7
7
|
gem "tzinfo"
|
8
8
|
gem "activesupport", :git=>"https://github.com/rails/rails.git"
|
9
9
|
gem "activemodel", :git=>"https://github.com/rails/rails.git"
|
10
|
+
gem "journey", :git=>"https://github.com/rails/journey.git"
|
10
11
|
|
11
12
|
gemspec :path=>"../"
|
data/lib/mongomodel.rb
CHANGED
@@ -9,6 +9,18 @@ require 'mongomodel/log_subscriber'
|
|
9
9
|
|
10
10
|
require 'active_support/core_ext/module/attribute_accessors'
|
11
11
|
|
12
|
+
begin
|
13
|
+
require "rails/observers/active_model/active_model"
|
14
|
+
rescue LoadError
|
15
|
+
# Either ActiveModel < 4 or rails-observers gem is not available
|
16
|
+
end
|
17
|
+
|
18
|
+
begin
|
19
|
+
require "protected_attributes"
|
20
|
+
rescue LoadError
|
21
|
+
# Either ActiveModel < 4 or protected_attributes gem is not available
|
22
|
+
end
|
23
|
+
|
12
24
|
module MongoModel
|
13
25
|
autoload :VERSION, 'mongomodel/version'
|
14
26
|
|
@@ -103,7 +115,7 @@ module MongoModel
|
|
103
115
|
@_database ||= configuration.establish_connection
|
104
116
|
end
|
105
117
|
|
106
|
-
require 'mongomodel/railtie' if defined?(Rails)
|
118
|
+
require 'mongomodel/railtie' if defined?(Rails::Railtie)
|
107
119
|
|
108
120
|
require 'mongomodel/compatibility/mongoid' if defined?(Mongoid)
|
109
121
|
require 'mongomodel/compatibility/mongo_mapper' if defined?(MongoMapper)
|
@@ -3,25 +3,29 @@ module MongoModel
|
|
3
3
|
module Protected
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
|
-
|
6
|
+
if defined?(ActiveModel::MassAssignmentSecurity)
|
7
|
+
include ActiveModel::MassAssignmentSecurity
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
module ClassMethods
|
10
|
+
def property(name, *args, &block)#:nodoc:
|
11
|
+
property = super(name, *args, &block)
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
attr_protected(name) if property.options[:protected]
|
14
|
+
attr_accessible(name) if property.options[:accessible]
|
14
15
|
|
15
|
-
|
16
|
+
property
|
17
|
+
end
|
16
18
|
end
|
17
|
-
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
def assign_attributes(attrs, options={})
|
21
|
+
if options[:without_protection]
|
22
|
+
super
|
23
|
+
else
|
24
|
+
super(sanitize_for_mass_assignment(attrs, options[:as] || :default))
|
25
|
+
end
|
24
26
|
end
|
27
|
+
elsif defined?(ActiveModel::DeprecatedMassAssignmentSecurity)
|
28
|
+
include ActiveModel::DeprecatedMassAssignmentSecurity
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
@@ -1,35 +1,35 @@
|
|
1
|
-
module MongoModel
|
2
|
-
module Observing
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
include ActiveModel::Observing
|
5
|
-
end
|
6
|
-
|
7
|
-
class Observer < ActiveModel::Observer
|
8
|
-
protected
|
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
|
18
|
-
|
19
|
-
def define_callbacks(klass)
|
20
|
-
observer = self
|
21
|
-
observer_name = observer.class.name.underscore.gsub('/', '__')
|
22
|
-
|
23
|
-
MongoModel::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)
|
29
|
-
end
|
30
|
-
klass.send(callback, callback_meth)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
1
|
+
module MongoModel
|
2
|
+
module Observing
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
include ActiveModel::Observing
|
5
|
+
end
|
6
|
+
|
7
|
+
class Observer < ActiveModel::Observer
|
8
|
+
protected
|
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
|
18
|
+
|
19
|
+
def define_callbacks(klass)
|
20
|
+
observer = self
|
21
|
+
observer_name = observer.class.name.underscore.gsub('/', '__')
|
22
|
+
|
23
|
+
MongoModel::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)
|
29
|
+
end
|
30
|
+
klass.send(callback, callback_meth)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -153,7 +153,7 @@ module MongoModel
|
|
153
153
|
end
|
154
154
|
|
155
155
|
def save_to_collection
|
156
|
-
collection.save(to_mongo, :
|
156
|
+
collection.save(to_mongo, :w => self.class.save_safely? ? 1 : 0)
|
157
157
|
set_new_record(false)
|
158
158
|
true
|
159
159
|
rescue Mongo::OperationFailure => e
|
@@ -32,7 +32,7 @@ module MongoModel
|
|
32
32
|
# Define our own to_time method as DateTime.to_time in ActiveSupport may return
|
33
33
|
# the DateTime object unchanged, whereas BSON expects an actual Time object.
|
34
34
|
def to_time(dt)
|
35
|
-
::Time.
|
35
|
+
::Time.utc(dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
data/lib/mongomodel/version.rb
CHANGED
data/mongomodel.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
s.add_dependency "activesupport", ">= 3.1"
|
18
18
|
s.add_dependency "activemodel", ">= 3.1"
|
19
|
-
s.add_dependency "mongo", "~> 1.
|
19
|
+
s.add_dependency "mongo", "~> 1.8"
|
20
20
|
|
21
21
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
22
22
|
s.add_development_dependency "rspec", "~> 2.8"
|
@@ -1,84 +1,86 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module MongoModel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
if ActiveModel::VERSION::STRING < '4.0' || Gem.loaded_specs['protected_attributes']
|
5
|
+
specs_for(Document, EmbeddedDocument) do
|
6
|
+
define_class(:TestDocument, described_class) do
|
7
|
+
property :foo, String
|
8
|
+
property :bar, String
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
+
subject { TestDocument.new }
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
describe "#attr_protected" do
|
14
|
+
before(:each) do
|
15
|
+
TestDocument.attr_protected :foo
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
it "disallows the attribute to be mass-assigned via attributes=" do
|
19
|
+
subject.attributes = { :foo => 'value of foo' }
|
20
|
+
subject.foo.should be_nil
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
it "does not disallow the attribute to be assigned individually" do
|
24
|
+
subject.foo = 'value of foo'
|
25
|
+
subject.foo.should == 'value of foo'
|
26
|
+
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
it "does not disallow other attributes to be mass-assigned via attributes=" do
|
29
|
+
subject.attributes = { :bar => 'value of bar' }
|
30
|
+
subject.bar.should == 'value of bar'
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
33
|
+
it "accepts multiple attributes" do
|
34
|
+
TestDocument.attr_protected :foo, :bar
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
subject.attributes = { :foo => 'value of foo', :bar => 'value of bar' }
|
37
|
+
subject.foo.should be_nil
|
38
|
+
subject.bar.should be_nil
|
39
|
+
end
|
38
40
|
end
|
39
|
-
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
describe "#attr_accessible" do
|
43
|
+
before(:each) do
|
44
|
+
TestDocument.attr_accessible :foo
|
45
|
+
end
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
it "allows the attribute to be mass-assigned via attributes=" do
|
48
|
+
subject.attributes = { :foo => 'value of foo' }
|
49
|
+
subject.foo.should == 'value of foo'
|
50
|
+
end
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
it "does not disallow other attributes to be mass-assigned via attributes=" do
|
53
|
+
subject.attributes = { :bar => 'value of bar' }
|
54
|
+
subject.bar.should be_nil
|
55
|
+
end
|
55
56
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
it "does not disallow others attributes to be assigned individually" do
|
58
|
+
subject.bar = 'value of bar'
|
59
|
+
subject.bar.should == 'value of bar'
|
60
|
+
end
|
60
61
|
|
61
|
-
|
62
|
-
|
62
|
+
it "accepts multiple attributes" do
|
63
|
+
TestDocument.attr_accessible :foo, :bar
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
subject.attributes = { :foo => 'value of foo', :bar => 'value of bar' }
|
66
|
+
subject.foo.should == 'value of foo'
|
67
|
+
subject.bar.should == 'value of bar'
|
68
|
+
end
|
67
69
|
end
|
68
|
-
end
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
describe "#property" do
|
72
|
+
context "with :protected option" do
|
73
|
+
it "makes the attribute protected" do
|
74
|
+
TestDocument.should_receive(:attr_protected).with(:baz)
|
75
|
+
TestDocument.property :baz, String, :protected => true
|
76
|
+
end
|
75
77
|
end
|
76
|
-
end
|
77
78
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
79
|
+
context "with :accessible option" do
|
80
|
+
it "makes the attribute accessible" do
|
81
|
+
TestDocument.should_receive(:attr_accessible).with(:baz)
|
82
|
+
TestDocument.property :baz, String, :accessible => true
|
83
|
+
end
|
82
84
|
end
|
83
85
|
end
|
84
86
|
end
|
@@ -1,32 +1,34 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module MongoModel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module MongoModel
|
4
|
+
if ActiveModel::VERSION::STRING < '4.0' || Gem.loaded_specs['rails-observers']
|
5
|
+
specs_for(Document) do
|
6
|
+
describe "observing" do
|
7
|
+
define_class(:TestDocument, described_class)
|
8
|
+
define_class(:TestObserver, Observer) do
|
9
|
+
observe :test_document
|
10
|
+
|
11
|
+
attr_accessor :callback
|
12
|
+
|
13
|
+
def after_save(model)
|
14
|
+
@callback.call(model) unless @callback.nil?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
subject { TestDocument.new }
|
19
|
+
|
20
|
+
it "has an #instance method to access the observer singleton" do
|
21
|
+
TestObserver.instance.should eq(TestObserver.instance)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "invokes the TestObserver singleton's after_save method after saving" do
|
25
|
+
callback = stub
|
26
|
+
callback.should_receive(:call).with(subject)
|
27
|
+
|
28
|
+
TestObserver.instance.callback = callback
|
29
|
+
subject.save
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
32
34
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongomodel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
53
|
+
version: '1.8'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
61
|
+
version: '1.8'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: bundler
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,6 +127,8 @@ files:
|
|
127
127
|
- gemfiles/mongoid.gemfile
|
128
128
|
- gemfiles/rails-3.1.gemfile
|
129
129
|
- gemfiles/rails-3.2.gemfile
|
130
|
+
- gemfiles/rails-4-observers.gemfile
|
131
|
+
- gemfiles/rails-4-protected-attributes.gemfile
|
130
132
|
- gemfiles/rails-4.gemfile
|
131
133
|
- lib/mongomodel.rb
|
132
134
|
- lib/mongomodel/attributes/mongo.rb
|
@@ -298,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
298
300
|
version: '0'
|
299
301
|
segments:
|
300
302
|
- 0
|
301
|
-
hash: -
|
303
|
+
hash: -157518307966196905
|
302
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
305
|
none: false
|
304
306
|
requirements:
|