Fix Embeddable and super issues. Prep for release 1.1.1

master v1.1.1
Sam Lown 2011-07-04 18:53:25 +02:00
parent 8efa5208da
commit 9d724aee47
5 changed files with 31 additions and 11 deletions

View File

@ -1 +1 @@
1.1.0
1.1.1

View File

@ -23,7 +23,7 @@ Gem::Specification.new do |s|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
s.add_dependency(%q<couchrest>, "1.1.0")
s.add_dependency(%q<couchrest>, "1.1.1")
s.add_dependency(%q<mime-types>, "~> 1.15")
s.add_dependency(%q<activemodel>, "~> 3.0")
s.add_dependency(%q<tzinfo>, "~> 0.3.22")

View File

@ -1,5 +1,11 @@
# CouchRest Model Change History
## 1.1.1 - 2011-07-04
* Minor fix
* Bumping CouchRest version dependency for important initialize method fix.
* Ensuring super on Embeddable#initialize can be called.
## 1.1.0 - 2011-06-25
* Major Alterations

View File

@ -2,8 +2,10 @@ module CouchRest::Model
module Embeddable
extend ActiveSupport::Concern
# Include Attributes early to ensure super() will work
include CouchRest::Attributes
included do
include CouchRest::Attributes
include CouchRest::Model::Configuration
include CouchRest::Model::Properties
include CouchRest::Model::PropertyProtection
@ -20,17 +22,18 @@ module CouchRest::Model
false # Can never be base doc!
end
# Initialize a new Casted Model. Accepts the same
# options as CouchRest::Model::Base for preparing and initializing
# attributes.
def initialize(keys = {}, options = {})
super()
prepare_all_attributes(keys, options)
run_callbacks(:initialize) { self }
end
end
end
# Initialize a new Casted Model. Accepts the same
# options as CouchRest::Model::Base for preparing and initializing
# attributes.
def initialize(keys = {}, options = {})
super()
prepare_all_attributes(keys, options)
run_callbacks(:initialize) { self }
end
# False if the casted model has already
# been saved in the containing document
def new?

View File

@ -79,6 +79,17 @@ describe CouchRest::Model::Embeddable do
@obj = klass.new
@obj.name.should eql("foobar")
end
it "should allow override of initialize with super" do
klass = Class.new do
include CouchRest::Model::Embeddable
after_initialize :set_name
property :name
def set_name; self.name = "foobar"; end
def initialize(attrs = {}); super(); end
end
@obj = klass.new
@obj.name.should eql("foobar")
end
end
describe "casted as an attribute, but without a value" do