public
Description: To provide a cleaner, more modular, heavier spec'd, more blackbox'd cache engine for Merb
Clone URL: git://github.com/benschwarz/merb-cache.git
Merged hassox/master. Lots of changes to cache store API amongst others.
benschwarz (author)
Tue Jul 22 03:23:51 -0700 2008
commit  a30cb66099d22f13a625aa6bc830d3d0b486e529
tree    960af14acc4758c825932fed0605e79036ca69bb
parent  82b1255162d0a6b71189a22a8f50ccfd99f29e73
...
2
3
4
5
 
6
7
8
...
54
55
56
57
58
 
 
 
 
 
 
 
59
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
...
2
3
4
 
5
6
7
8
...
54
55
56
 
 
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
0
@@ -2,7 +2,7 @@ require 'rubygems'
0
 require 'rake/gempackagetask'
0
 require 'rubygems/specification'
0
 require 'date'
0
-# require '../merb_rake_helper'
0
+require "spec/rake/spectask"
0
 
0
 PLUGIN = "merb-cache"
0
 NAME = "merb-cache"
0
@@ -54,7 +54,37 @@ namespace :jruby do
0
 
0
 end
0
 
0
-task :specs do
0
- system("spec --format specdoc --colour #{Dir.glob("spec/*_spec.rb").join(" ")}")
0
+desc "Run all specs"
0
+Spec::Rake::SpecTask.new("specs") do |t|
0
+ t.spec_opts = ["--format", "specdoc", "--colour"]
0
+ t.spec_files = Dir["spec/**/*_spec.rb"].sort
0
+ t.rcov = true
0
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
0
+ t.rcov_opts << '--only-uncovered'
0
 end
0
 
0
+##############################################################################
0
+# memcached
0
+##############################################################################
0
+MEMCACHED_PORTS = 43042..43043
0
+
0
+namespace :memcached do
0
+ desc "Start the memcached instances for specs"
0
+ task :start do
0
+ log = "/tmp/memcached.log"
0
+ system ">#{log}"
0
+
0
+ verbosity = (ENV['DEBUG'] ? "-vv" : "")
0
+
0
+ (MEMCACHED_PORTS).each do |port|
0
+ system "memcached #{verbosity} -p #{port} >> #{log} 2>&1 &"
0
+ end
0
+ end
0
+
0
+ desc "Kill the memcached instances"
0
+ task :kill do
0
+ `ps awx`.split("\n").grep(/#{MEMCACHED_PORTS.to_a.join('|')}/).map do |process|
0
+ system("kill -9 #{process.to_i}") rescue nil
0
+ end
0
+ end
0
+end
0
\ No newline at end of file
...
1
2
3
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
...
1
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
4
5
6
7
8
9
10
11
12
0
@@ -1,28 +1,12 @@
0
 # make sure we're running inside Merb
0
 if defined?(Merb::Plugins)
0
- # Deps
0
- %w(gzip/gzip).each{|dep| require File.join(File.dirname(__FILE__), '..', 'vendor', dep) }
0
-
0
- require 'merb-cache/merb-cache'
0
-
0
- require 'merb-cache/controller'
0
- require 'merb-cache/cache_store'
0
- require 'merb-cache/controller_cache_proxy'
0
-
0
- path = File.expand_path(File.join(File.dirname(__FILE__))) / "merb-cache" / "cache_stores"
0
- Merb::Cache.register(:memcached, :path => (path / "memcached_store"), :class_name => "MemcachedStore")
0
- Merb::Cache.register(:mintcache, :path => (path / "mintcache_store"), :class_name => "MintcachedStore")
0
- Merb::Cache.register(:file, :path => (path / "file_store"), :class_name => "FileStore")
0
- Merb::Cache.register(:filemarshal, :path => (path / "filemarshal_store"), :class_name => "FilemarshalStore")
0
-
0
-
0
- Merb::BootLoader.before_app_loads do
0
- # code that can be required after the application loads
0
- # Initialize the cache store if there is not one setup for the default
0
- Merb::Cache.setup_default if Merb::Cache[:default].empty?
0
- end
0
-
0
- Merb::BootLoader.after_app_loads do
0
-
0
+ require "merb-cache" / "cache"
0
+ require "merb-cache" / "core_ext" / "enumerable"
0
+ require "merb-cache" / "core_ext" / "hash"
0
+ require "merb-cache" / "merb_ext" / "controller"
0
+ require "merb-cache" / "merb_ext" / "support" / "cache_proxy"
0
+
0
+ class Merb::Controller
0
+ include Merb::Cache::CacheMixin
0
   end
0
 end
...
3
4
5
 
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
...
3
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
0
@@ -3,16 +3,70 @@ $:.push File.join(File.dirname(__FILE__), '..', 'lib')
0
 
0
 # Deps
0
 require 'merb-core'
0
+require 'merb-action-args'
0
 require File.join(File.dirname(__FILE__), '..', 'lib', 'merb-cache')
0
 
0
-# Require a controller to test requests against and check
0
-# methods are included correctly.
0
-require File.join(File.dirname(__FILE__), 'supports', 'controller')
0
-
0
-# We want
0
-Merb.root = File.join(File.dirname(__FILE__), '..')
0
-
0
 # We want logging!
0
 Merb.logger = Merb::Logger.new(File.join(File.dirname(__FILE__), '..', 'log', 'merb_test.log'))
0
 
0
-# We need memcached to run our specs, and it needs to be running. Oh the pain of it all!
0
\ No newline at end of file
0
+Merb.start :environment => "test", :adapter => "runner"
0
+
0
+require "merb-core/test"
0
+Spec::Runner.configure do |config|
0
+ config.include Merb::Test::Helpers
0
+ #config.include Merb::Test::ControllerHelper
0
+ config.include Merb::Test::RouteHelper
0
+end
0
+
0
+class DummyStore < Merb::Cache::AbstractStore
0
+ attr_accessor :vault, :options
0
+
0
+ def initialize(config = {})
0
+ super(config)
0
+ @options = config
0
+ @vault = {}
0
+ end
0
+
0
+ def writable?(*args)
0
+ true
0
+ end
0
+
0
+ def read(key, parameters = {})
0
+ if @vault.keys.include?(key)
0
+ @vault[key] if @vault[key].last == parameters
0
+ end
0
+ end
0
+
0
+ def data(key, parameters = {})
0
+ read(key, parameters)[0] if read(key, parameters)
0
+ end
0
+
0
+ def time(key, parameters = {})
0
+ read(key, parameters)[1] if read(key, parameters)
0
+ end
0
+
0
+ def conditions(key, parameters = {})
0
+ read(key, parameters)[2] if read(key, parameters)
0
+ end
0
+
0
+ def write(key, data = nil, parameters = {}, conditions = {})
0
+ @vault[key] = [data, Time.now, conditions, parameters]
0
+ true
0
+ end
0
+
0
+ def fetch(key, parameters = {}, conditions = {}, &blk)
0
+ @vault[[key, parameters]] ||= blk.call
0
+ end
0
+
0
+ def exists?(key, parameters = {})
0
+ @vault.has_key? [key, parameters]
0
+ end
0
+
0
+ def delete(key, parameters = {})
0
+ @vault.delete([key, parameters]) unless vault[[key, parameters]].nil?
0
+ end
0
+
0
+ def delete_all
0
+ @vault = {}
0
+ end
0
+end
0
\ No newline at end of file

Comments

    No one has commented yet.