merb-cache 1.0.15 → 1.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
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