fixed the design doc cache issue
This commit is contained in:
parent
c35c35157a
commit
295c0f0511
5 changed files with 8 additions and 25 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = %q{couchrest}
|
s.name = %q{couchrest}
|
||||||
s.version = "0.27"
|
s.version = "0.28"
|
||||||
|
|
||||||
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
||||||
s.authors = ["J. Chris Anderson", "Matt Aimonetti"]
|
s.authors = ["J. Chris Anderson", "Matt Aimonetti"]
|
||||||
|
|
|
@ -28,7 +28,7 @@ require 'couchrest/monkeypatches'
|
||||||
|
|
||||||
# = CouchDB, close to the metal
|
# = CouchDB, close to the metal
|
||||||
module CouchRest
|
module CouchRest
|
||||||
VERSION = '0.27' unless self.const_defined?("VERSION")
|
VERSION = '0.28' unless self.const_defined?("VERSION")
|
||||||
|
|
||||||
autoload :Server, 'couchrest/core/server'
|
autoload :Server, 'couchrest/core/server'
|
||||||
autoload :Database, 'couchrest/core/database'
|
autoload :Database, 'couchrest/core/database'
|
||||||
|
|
|
@ -236,16 +236,6 @@ module CouchRest
|
||||||
copy_doc(doc, dest)
|
copy_doc(doc, dest)
|
||||||
end
|
end
|
||||||
|
|
||||||
def extended_document_classes
|
|
||||||
@extended_document_classes ||= []
|
|
||||||
end
|
|
||||||
|
|
||||||
# store extended document classes so we can clear
|
|
||||||
# their freshness when we reset the DB
|
|
||||||
def register_extended_document_class(klass)
|
|
||||||
extended_document_classes << klass
|
|
||||||
end
|
|
||||||
|
|
||||||
# Compact the database, removing old document revisions and optimizing space use.
|
# Compact the database, removing old document revisions and optimizing space use.
|
||||||
def compact!
|
def compact!
|
||||||
CouchRest.post "#{@uri}/_compact"
|
CouchRest.post "#{@uri}/_compact"
|
||||||
|
@ -288,7 +278,7 @@ module CouchRest
|
||||||
private
|
private
|
||||||
|
|
||||||
def clear_extended_doc_fresh_cache
|
def clear_extended_doc_fresh_cache
|
||||||
extended_document_classes.each{|klass| klass.design_doc_fresh = false if klass.respond_to?(:design_doc_fresh=) }
|
::CouchRest::ExtendedDocument.subclasses.each{|klass| klass.design_doc_fresh = false if klass.respond_to?(:design_doc_fresh=) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def uri_for_attachment(doc, name)
|
def uri_for_attachment(doc, name)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
require 'mime/types'
|
require 'mime/types'
|
||||||
require File.join(File.dirname(__FILE__), "property")
|
require File.join(File.dirname(__FILE__), "property")
|
||||||
require File.join(File.dirname(__FILE__), '..', 'mixins', 'extended_document_mixins')
|
require File.join(File.dirname(__FILE__), '..', 'mixins', 'extended_document_mixins')
|
||||||
|
require "enumerator"
|
||||||
|
|
||||||
module CouchRest
|
module CouchRest
|
||||||
|
|
||||||
|
@ -13,6 +14,10 @@ module CouchRest
|
||||||
include CouchRest::Mixins::ExtendedAttachments
|
include CouchRest::Mixins::ExtendedAttachments
|
||||||
include CouchRest::Mixins::ClassProxy
|
include CouchRest::Mixins::ClassProxy
|
||||||
|
|
||||||
|
def self.subclasses
|
||||||
|
ObjectSpace.enum_for(:each_object, class << self; self; end).to_a.delete_if{|k| k == self}
|
||||||
|
end
|
||||||
|
|
||||||
def self.inherited(subklass)
|
def self.inherited(subklass)
|
||||||
subklass.send(:include, CouchRest::Mixins::Properties)
|
subklass.send(:include, CouchRest::Mixins::Properties)
|
||||||
subklass.class_eval <<-EOS, __FILE__, __LINE__
|
subklass.class_eval <<-EOS, __FILE__, __LINE__
|
||||||
|
@ -20,15 +25,6 @@ module CouchRest
|
||||||
subklass.properties = self.properties.dup
|
subklass.properties = self.properties.dup
|
||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
# re opening the use_database method so we can register our class
|
|
||||||
subklass.class_eval <<-EOS, __FILE__, __LINE__
|
|
||||||
def self.use_database(db)
|
|
||||||
super
|
|
||||||
db.register_extended_document_class(self) if db.respond_to?(:register_extended_document_class) && !db.extended_document_classes.include?(self)
|
|
||||||
end
|
|
||||||
EOS
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Accessors
|
# Accessors
|
||||||
|
|
|
@ -61,7 +61,6 @@ describe "ExtendedDocument views" do
|
||||||
describe "another model with a simple view" do
|
describe "another model with a simple view" do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
reset_test_db!
|
reset_test_db!
|
||||||
Course.design_doc_fresh = false
|
|
||||||
%w{aaa bbb ddd eee}.each do |title|
|
%w{aaa bbb ddd eee}.each do |title|
|
||||||
Course.new(:title => title).save
|
Course.new(:title => title).save
|
||||||
end
|
end
|
||||||
|
@ -109,13 +108,11 @@ describe "ExtendedDocument views" do
|
||||||
duck["dept"].should == true
|
duck["dept"].should == true
|
||||||
end
|
end
|
||||||
it "should make the design doc" do
|
it "should make the design doc" do
|
||||||
Course.design_doc_fresh = false
|
|
||||||
@as = Course.by_dept
|
@as = Course.by_dept
|
||||||
@doc = Course.design_doc
|
@doc = Course.design_doc
|
||||||
@doc["views"]["by_dept"]["map"].should_not include("couchrest")
|
@doc["views"]["by_dept"]["map"].should_not include("couchrest")
|
||||||
end
|
end
|
||||||
it "should not look for class" do
|
it "should not look for class" do
|
||||||
Course.design_doc_fresh = false
|
|
||||||
@as = Course.by_dept
|
@as = Course.by_dept
|
||||||
@as[0]['_id'].should == @id
|
@as[0]['_id'].should == @id
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue