merb-cache 1.0.15 → 1.1.0.pre

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/Rakefile CHANGED
@@ -1,80 +1,73 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "rake_helpers"))
1
+ require 'rubygems'
2
+ require 'rake'
2
3
 
3
- ##############################################################################
4
- # Package && release
5
- ##############################################################################
6
- RUBY_FORGE_PROJECT = "merb"
7
- PROJECT_URL = "http://merbivore.com"
8
- PROJECT_SUMMARY = "Merb plugin that provides caching (page, action, fragment, object)"
9
- PROJECT_DESCRIPTION = PROJECT_SUMMARY
10
-
11
- GEM_AUTHOR = "Ben Burkert"
12
- GEM_EMAIL = "ben@benburkert.com"
13
-
14
- GEM_NAME = "merb-cache"
15
- PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
16
- GEM_VERSION = Merb::VERSION + PKG_BUILD
17
-
18
- RELEASE_NAME = "REL #{GEM_VERSION}"
19
-
20
- require "extlib/tasks/release"
21
-
22
- spec = Gem::Specification.new do |s|
23
- s.rubyforge_project = RUBY_FORGE_PROJECT
24
- s.name = GEM_NAME
25
- s.version = GEM_VERSION
26
- s.platform = Gem::Platform::RUBY
27
- s.has_rdoc = true
28
- s.extra_rdoc_files = ["README", "LICENSE", 'TODO']
29
- s.summary = PROJECT_SUMMARY
30
- s.description = PROJECT_DESCRIPTION
31
- s.author = GEM_AUTHOR
32
- s.email = GEM_EMAIL
33
- s.homepage = PROJECT_URL
34
- s.add_dependency('merb-core', "~> #{Merb::VERSION}")
35
- s.require_path = 'lib'
36
- s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,spec}/**/*")
37
- end
4
+ # Assume a typical dev checkout to fetch the current merb-core version
5
+ require File.expand_path('../../merb-core/lib/merb-core/version', __FILE__)
38
6
 
39
- Rake::GemPackageTask.new(spec) do |pkg|
40
- pkg.gem_spec = spec
41
- end
7
+ # Load this library's version information
8
+ require File.expand_path('../lib/merb-cache/version', __FILE__)
9
+
10
+ begin
11
+
12
+ gem 'jeweler', '~> 1.4'
13
+ require 'jeweler'
14
+
15
+ Jeweler::Tasks.new do |gemspec|
16
+
17
+ gemspec.version = Merb::Cache::VERSION
18
+
19
+ gemspec.name = "merb-cache"
20
+ gemspec.description = "Merb plugin for supporting assets"
21
+ gemspec.summary = "Merb plugin that provides caching (page, action, fragment, object)"
22
+
23
+ gemspec.authors = [ "Ben Burkert" ]
24
+ gemspec.email = "ben@benburkert.com"
25
+ gemspec.homepage = "http://merbivore.com/"
26
+
27
+ gemspec.files = %w(LICENSE Rakefile README TODO) + Dir['{lib,spec}/**/*']
42
28
 
43
- desc "Install the gem"
44
- task :install do
45
- Merb::RakeHelper.install(GEM_NAME, :version => GEM_VERSION)
29
+ # Runtime dependencies
30
+ gemspec.add_dependency 'merb-core', "~> #{Merb::VERSION}"
31
+
32
+ # Development dependencies
33
+ gemspec.add_development_dependency 'rspec', '>= 1.2.9'
34
+
35
+ end
36
+
37
+ Jeweler::GemcutterTasks.new
38
+
39
+ rescue LoadError
40
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
46
41
  end
47
42
 
48
- desc "Uninstall the gem"
49
- task :uninstall do
50
- Merb::RakeHelper.uninstall(GEM_NAME, :version => GEM_VERSION)
43
+ require 'spec/rake/spectask'
44
+ Spec::Rake::SpecTask.new(:spec) do |spec|
45
+ spec.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
46
+ spec.libs << 'lib' << 'spec'
47
+ spec.spec_files = FileList['spec/**/*_spec.rb']
51
48
  end
52
49
 
53
- desc "Create a gemspec file"
54
- task :gemspec do
55
- File.open("#{GEM_NAME}.gemspec", "w") do |file|
56
- file.puts spec.to_ruby
57
- end
50
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
51
+ spec.libs << 'lib' << 'spec'
52
+ spec.pattern = 'spec/**/*_spec.rb'
53
+ spec.rcov = true
58
54
  end
59
55
 
60
- desc "Run all examples (or a specific spec with TASK=xxxx)"
61
- Spec::Rake::SpecTask.new('spec') do |t|
62
- t.spec_opts = ["-cfs"]
63
- t.spec_files = begin
64
- if ENV["TASK"]
65
- ENV["TASK"].split(',').map { |task| "spec/**/#{task}_spec.rb" }
66
- else
67
- FileList['spec/**/*_spec.rb']
68
- end
69
- end
56
+ task :default => :spec
57
+
58
+ require 'rake/rdoctask'
59
+ Rake::RDocTask.new do |rdoc|
60
+ rdoc.rdoc_dir = 'rdoc'
61
+ rdoc.title = "test_gem #{Merb::Cache::VERSION}"
62
+ rdoc.rdoc_files.include('README*')
63
+ rdoc.rdoc_files.include('lib/**/*.rb')
70
64
  end
71
65
 
72
- desc 'Default: run spec examples'
73
- task :default => 'spec'
74
66
 
75
67
  ##############################################################################
76
68
  # memcached
77
69
  ##############################################################################
70
+
78
71
  MEMCACHED_PORTS = 43042..43043
79
72
 
80
73
  namespace :memcached do
@@ -189,4 +189,4 @@ module Merb::Cache::CacheMixin
189
189
 
190
190
  return parameters, conditions.except(:params, :store, :stores)
191
191
  end
192
- end
192
+ end
@@ -89,8 +89,9 @@ module Merb::Cache
89
89
  #
90
90
  # Use :buffer_requests option to use bufferring,
91
91
  # :no_block to use non-blocking async I/O.
92
+ # :support_cas to support CAS
92
93
  def connect(config = {})
93
- @memcached = ::Memcached.new(@servers, config.only(:buffer_requests, :no_block).merge(:namespace => @namespace))
94
+ @memcached = ::Memcached.new(@servers, config.only(:buffer_requests, :no_block, :support_cas).merge(:namespace => @namespace))
94
95
  end
95
96
 
96
97
  # Returns cache key calculated from base key
@@ -1,4 +1,4 @@
1
- # -*- coding: undecided -*-
1
+ # -*- coding: utf-8 -*-
2
2
  module Merb::Cache
3
3
  # A strategy store wraps one or
4
4
  # more fundamental stores, acting as a middle man between caching
@@ -35,29 +35,29 @@ module Merb::Cache
35
35
  class AbstractStrategyStore < AbstractStore
36
36
  # START: interface for creating strategy stores. This should/might change.
37
37
  def self.contextualize(*stores)
38
- Class.new(self) do
39
- cattr_accessor :contextualized_stores
38
+ Class.new(self) do
39
+ cattr_accessor :contextualized_stores
40
40
 
41
- self.contextualized_stores = stores
42
- end
41
+ self.contextualized_stores = stores
43
42
  end
43
+ end
44
44
 
45
- class << self
46
- alias_method :[], :contextualize
47
- end
45
+ class << self
46
+ alias_method :[], :contextualize
47
+ end
48
48
 
49
- attr_accessor :stores
49
+ attr_accessor :stores
50
50
 
51
- def initialize(config = {})
52
- @stores = contextualized_stores.map do |cs|
53
- case cs
54
- when Symbol
55
- Merb::Cache[cs]
56
- when Class
57
- cs.new(config)
58
- end
51
+ def initialize(config = {})
52
+ @stores = contextualized_stores.map do |cs|
53
+ case cs
54
+ when Symbol
55
+ Merb::Cache[cs]
56
+ when Class
57
+ cs.new(config)
59
58
  end
60
59
  end
60
+ end
61
61
 
62
62
  # END: interface for creating strategy stores.
63
63
 
@@ -8,7 +8,7 @@ module Merb::Cache
8
8
  # large pages.
9
9
  class GzipStore < AbstractStrategyStore
10
10
  def writable?(key, parameters = {}, conditions = {})
11
- true
11
+ @stores.any? {|c| c.writable?(key, parameters, conditions)}
12
12
  end
13
13
 
14
14
  def read(key, parameters = {})
@@ -29,7 +29,7 @@ module Merb::Cache
29
29
 
30
30
  def fetch(key, parameters = {}, conditions = {}, &blk)
31
31
  wrapper_blk = lambda { compress(blk.call) }
32
- decompress(read(key, parameters) || @stores.capture_first {|s| s.fetch(key, parameters, conditions, &wrapper_blk)})
32
+ read(key, parameters) || decompress(@stores.capture_first {|s| s.fetch(key, parameters, conditions, &wrapper_blk)})
33
33
  end
34
34
 
35
35
  def exists?(key, parameters = {})
@@ -0,0 +1,5 @@
1
+ module Merb
2
+ module Cache
3
+ VERSION = '1.1.0.pre'.freeze
4
+ end
5
+ end
data/lib/merb-cache.rb CHANGED
@@ -1,12 +1,14 @@
1
1
  # make sure we're running inside Merb
2
2
  if defined?(Merb::Plugins)
3
- require "merb-cache" / "cache"
4
- require "merb-cache" / "core_ext" / "enumerable"
5
- require "merb-cache" / "core_ext" / "hash"
6
- require "merb-cache" / "merb_ext" / "controller"
7
- require "merb-cache" / "cache_request"
3
+
4
+ require "merb-cache/cache"
5
+ require "merb-cache/core_ext/enumerable"
6
+ require "merb-cache/core_ext/hash"
7
+ require "merb-cache/merb_ext/controller"
8
+ require "merb-cache/cache_request"
8
9
 
9
10
  class Merb::Controller
10
11
  include Merb::Cache::CacheMixin
11
12
  end
13
+
12
14
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Merb::Cache::CacheRequest do
4
4
  it "should subclass Merb::Request" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Merb::Cache do
4
4
  before(:each) do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Enumerable do
4
4
  describe "#capture_first" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Hash do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Merb::Cache::CacheMixin do
4
4
  before(:all) do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe 'all stores', :shared => true do
4
4
  describe "#writable?" do
@@ -1,6 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- # has 'all stores' shared group
3
- require File.dirname(__FILE__) + '/abstract_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/fundamental/abstract_store_spec'
4
3
 
5
4
  describe Merb::Cache::FileStore do
6
5
  it_should_behave_like 'all stores'
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/fundamental/abstract_store_spec'
3
3
 
4
4
  begin
5
5
  require 'memcached'
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/../fundamental/abstract_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/fundamental/abstract_store_spec'
3
3
 
4
4
 
5
5
  describe Merb::Cache::AbstractStrategyStore do
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_strategy_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/strategy/abstract_strategy_store_spec'
3
3
 
4
4
  describe Merb::Cache::ActionStore do
5
5
  it_should_behave_like 'all strategy stores'
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_strategy_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/strategy/abstract_strategy_store_spec'
3
3
 
4
4
  describe Merb::Cache::AdhocStore do
5
5
  it_should_behave_like 'all stores'
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_strategy_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/strategy/abstract_strategy_store_spec'
3
3
 
4
4
  describe Merb::Cache::GzipStore do
5
5
  it_should_behave_like 'all strategy stores'
@@ -10,11 +10,17 @@ describe Merb::Cache::GzipStore do
10
10
  end
11
11
 
12
12
  describe "#writable?" do
13
- it "should always be true" do
13
+ it "should be true whatever the key" do
14
14
  @store.writable?(:foo).should be_true
15
15
  @store.writable?('foo').should be_true
16
16
  @store.writable?(123).should be_true
17
17
  end
18
+
19
+ it "should be false if none of the context caches are writable" do
20
+ @store.stores.each {|s| s.should_receive(:writable?).and_return false}
21
+
22
+ @store.writable?(:foo).should be_false
23
+ end
18
24
  end
19
25
 
20
26
  describe "#read" do
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_strategy_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/strategy/abstract_strategy_store_spec'
3
3
 
4
4
  describe Merb::Cache::PageStore do
5
5
  it_should_behave_like 'all strategy stores'
@@ -1,5 +1,5 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
- require File.dirname(__FILE__) + '/abstract_strategy_store_spec'
1
+ require 'spec_helper'
2
+ require 'merb-cache/stores/strategy/abstract_strategy_store_spec'
3
3
 
4
4
  describe Merb::Cache::SHA1Store do
5
5
  it_should_behave_like 'all strategy stores'
data/spec/spec.opts ADDED
@@ -0,0 +1,2 @@
1
+ --format specdoc
2
+ --colour
data/spec/spec_helper.rb CHANGED
@@ -1,24 +1,29 @@
1
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')
1
+ require "rubygems"
2
2
 
3
- # Deps
4
- require 'rubygems'
3
+ # Use current merb-core sources if running from a typical dev checkout.
4
+ lib = File.expand_path('../../../merb-core/lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) if File.directory?(lib)
5
6
  require 'merb-core'
7
+
8
+ # Use current merb-action-args sources if running from a typical dev checkout.
9
+ lib = File.expand_path('../../../merb-action-args/lib', __FILE__)
10
+ $LOAD_PATH.unshift(lib) if File.directory?(lib)
6
11
  require 'merb-action-args'
7
- require File.join(File.dirname(__FILE__), '..', 'lib', 'merb-cache')
8
12
 
9
- Merb.disable(:initfile)
13
+ # The lib under test
14
+ require "merb-cache"
15
+
16
+ # Satisfies Autotest and anyone else not using the Rake tasks
17
+ require 'spec'
10
18
 
11
- Merb.start :environment => "test",
12
- :adapter => "runner",
13
- :log_file => File.join(File.dirname(__FILE__), '..', 'log', 'merb_test.log')
19
+ Merb.start :environment => 'test'
14
20
 
15
- require "merb-core/test"
16
21
  Spec::Runner.configure do |config|
17
- config.include Merb::Test::Helpers
18
- #config.include Merb::Test::ControllerHelper
22
+ config.include Merb::Test::RequestHelper
19
23
  config.include Merb::Test::RouteHelper
20
24
  end
21
25
 
26
+
22
27
  class DummyStore < Merb::Cache::AbstractStore
23
28
  cattr_accessor :vault
24
29
  attr_accessor :options
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.1.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Burkert
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-04 00:00:00 +00:00
12
+ date: 2010-02-20 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,23 +20,34 @@ dependencies:
20
20
  requirements:
21
21
  - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 1.0.15
23
+ version: 1.1.0.pre
24
24
  version:
25
- description: Merb plugin that provides caching (page, action, fragment, object)
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.9
34
+ version:
35
+ description: Merb plugin for supporting assets
26
36
  email: ben@benburkert.com
27
37
  executables: []
28
38
 
29
39
  extensions: []
30
40
 
31
41
  extra_rdoc_files:
32
- - README
33
42
  - LICENSE
43
+ - README
34
44
  - TODO
35
45
  files:
36
46
  - LICENSE
37
47
  - README
38
48
  - Rakefile
39
49
  - TODO
50
+ - lib/merb-cache.rb
40
51
  - lib/merb-cache/cache.rb
41
52
  - lib/merb-cache/cache_request.rb
42
53
  - lib/merb-cache/core_ext/enumerable.rb
@@ -51,7 +62,7 @@ files:
51
62
  - lib/merb-cache/stores/strategy/gzip_store.rb
52
63
  - lib/merb-cache/stores/strategy/page_store.rb
53
64
  - lib/merb-cache/stores/strategy/sha1_store.rb
54
- - lib/merb-cache.rb
65
+ - lib/merb-cache/version.rb
55
66
  - spec/merb-cache/cache_request_spec.rb
56
67
  - spec/merb-cache/cache_spec.rb
57
68
  - spec/merb-cache/core_ext/enumerable_spec.rb
@@ -66,14 +77,15 @@ files:
66
77
  - spec/merb-cache/stores/strategy/gzip_store_spec.rb
67
78
  - spec/merb-cache/stores/strategy/page_store_spec.rb
68
79
  - spec/merb-cache/stores/strategy/sha1_store_spec.rb
80
+ - spec/spec.opts
69
81
  - spec/spec_helper.rb
70
82
  has_rdoc: true
71
- homepage: http://merbivore.com
83
+ homepage: http://merbivore.com/
72
84
  licenses: []
73
85
 
74
86
  post_install_message:
75
- rdoc_options: []
76
-
87
+ rdoc_options:
88
+ - --charset=UTF-8
77
89
  require_paths:
78
90
  - lib
79
91
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -84,13 +96,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
84
96
  version:
85
97
  required_rubygems_version: !ruby/object:Gem::Requirement
86
98
  requirements:
87
- - - ">="
99
+ - - ">"
88
100
  - !ruby/object:Gem::Version
89
- version: "0"
101
+ version: 1.3.1
90
102
  version:
91
103
  requirements: []
92
104
 
93
- rubyforge_project: merb
105
+ rubyforge_project:
94
106
  rubygems_version: 1.3.5
95
107
  signing_key:
96
108
  specification_version: 3