thorero-cache 0.9.4
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/LICENSE +20 -0
- data/README +160 -0
- data/Rakefile +59 -0
- data/TODO +2 -0
- data/lib/merb-cache.rb +10 -0
- data/lib/merb-cache/cache-action.rb +135 -0
- data/lib/merb-cache/cache-fragment.rb +95 -0
- data/lib/merb-cache/cache-page.rb +203 -0
- data/lib/merb-cache/cache-store/database-activerecord.rb +88 -0
- data/lib/merb-cache/cache-store/database-datamapper.rb +79 -0
- data/lib/merb-cache/cache-store/database-sequel.rb +78 -0
- data/lib/merb-cache/cache-store/database.rb +144 -0
- data/lib/merb-cache/cache-store/dummy.rb +106 -0
- data/lib/merb-cache/cache-store/file.rb +194 -0
- data/lib/merb-cache/cache-store/memcache.rb +199 -0
- data/lib/merb-cache/cache-store/memory.rb +168 -0
- data/lib/merb-cache/merb-cache.rb +165 -0
- data/lib/merb-cache/merbtasks.rb +6 -0
- data/spec/config/database.yml +14 -0
- data/spec/controller.rb +87 -0
- data/spec/log/merb_test.log +433 -0
- data/spec/merb-cache-action_spec.rb +137 -0
- data/spec/merb-cache-fragment_spec.rb +100 -0
- data/spec/merb-cache-page_spec.rb +150 -0
- data/spec/merb-cache_spec.rb +15 -0
- data/spec/spec_helper.rb +84 -0
- data/spec/views/cache_controller/action1.html.erb +4 -0
- data/spec/views/cache_controller/action2.html.haml +4 -0
- metadata +110 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
describe "merb-cache-action" do
|
2
|
+
|
3
|
+
it "should cache action (action3)" do
|
4
|
+
c = get("/cache_controller/action3")
|
5
|
+
c.body.strip.should == "test action3"
|
6
|
+
c.cached?("/cache_controller/action3").should be_true
|
7
|
+
c.cached_action?("action3").should be_true
|
8
|
+
c.cache_get("/cache_controller/action3").should == "test action3"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should expire action (action3)" do
|
12
|
+
CACHE.expire_action "action3"
|
13
|
+
CACHE.cache_get("/cache_controller/action3").should be_nil
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should cache action (action3) with full path" do
|
17
|
+
c = get("/cache_controller/action3/abc/456/ghi")
|
18
|
+
c.body.strip.should == "test action3"
|
19
|
+
c.cached?(c.request.path).should be_true
|
20
|
+
c.cache_get(c.request.path).should == "test action3"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should expire action (action3) with full path" do
|
24
|
+
c = get("/cache_controller/action3/abc/456/ghi")
|
25
|
+
c.expire_action(:key => c.request.path)
|
26
|
+
c.cache_get(c.request.path).should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should expire action (action4) after 3 seconds" do
|
30
|
+
c = get("/cache_controller/action4")
|
31
|
+
c.body.strip.should == "test action4"
|
32
|
+
c.cached?("/cache_controller/action4").should be_true
|
33
|
+
c.cache_get("/cache_controller/action4").should == "test action4"
|
34
|
+
sleep 4
|
35
|
+
c.cache_get("/cache_controller/action4").should be_nil
|
36
|
+
c.cached_action?(:action => "action4").should be_false
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should cache action with full path (action4) and expire in 3 seconds" do
|
40
|
+
CACHE.expire_action :match => true, :action => "action4"
|
41
|
+
CACHE.cached_action?(:action => "action4", :params => %w(path to nowhere)).should be_false
|
42
|
+
c = get("/cache_controller/action4/path/to/nowhere/")
|
43
|
+
c.cached_action?(:action => "action4", :params => %w(path to nowhere)).should be_true
|
44
|
+
sleep 3.5
|
45
|
+
c.cache_get("/cache_controller/action4/path/to/nowhere").should be_nil
|
46
|
+
c.cached_action?(:action => "action4", :params => %w(path to nowhere)).should be_false
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should expire action in many ways" do
|
50
|
+
c = get("/cache_controller/action4")
|
51
|
+
CACHE.expire_action("action4")
|
52
|
+
CACHE.cached_action?("action4").should be_false
|
53
|
+
|
54
|
+
c = get("/cache_controller/action4")
|
55
|
+
CACHE.expire_action(:match => "/cache_control")
|
56
|
+
CACHE.cached_action?(:action => "action4").should be_false
|
57
|
+
|
58
|
+
c = get("/cache_controller/action4")
|
59
|
+
CACHE.expire_action(:action => "action4")
|
60
|
+
CACHE.cached_action?(:action => "action4").should be_false
|
61
|
+
|
62
|
+
c = get("/cache_controller/action4/id1/id2")
|
63
|
+
CACHE.expire_action(:action => "action4", :params => %w(id1 id2))
|
64
|
+
CACHE.cached_action?(:action => "action4", :params => %w(id1 id2)).should be_false
|
65
|
+
|
66
|
+
c = get("/cache_controller/action4/id1/id2")
|
67
|
+
CACHE.expire_action(:action => "action4", :match => true)
|
68
|
+
CACHE.cached_action?(:action => "action4", :params => %w(id1 id2)).should be_false
|
69
|
+
|
70
|
+
c = get("/cache_controller/action4")
|
71
|
+
CACHE.expire_action(:action => "action4", :controller => "cache_controller")
|
72
|
+
CACHE.cached_action?(:action => "action4", :controller => "cache_controller").should be_false
|
73
|
+
|
74
|
+
c = get("/cache_controller/action4/id1/id2")
|
75
|
+
CACHE.expire_action(:action => "action4", :params => %w(id1), :match => true)
|
76
|
+
CACHE.cached_action?(:action => "action4", :params => %w(id1 id2)).should be_false
|
77
|
+
|
78
|
+
c = get("/cache_controller/action4/id1/id2")
|
79
|
+
CACHE.expire_action(:action => "action4", :controller => "cache_controller", :match => true)
|
80
|
+
CACHE.cached_action?(:action => "action4", :params => %w(id1 id2)).should be_false
|
81
|
+
|
82
|
+
c = get("/cache_controller/action4/id1/id2")
|
83
|
+
CACHE.expire_action(:action => "action4", :controller => "cache_controller", :params => %w(id1), :match => true)
|
84
|
+
CACHE.cached_action?(:action => "action4", :params => %w(id1 id2)).should be_false
|
85
|
+
|
86
|
+
c = get("/cache_controller/action4/id1/id2")
|
87
|
+
CACHE.expire_action(:action => "action4", :controller => "cache_controller", :params => %w(id1 id2))
|
88
|
+
CACHE.cached_action?(:action => "action4", :controller => "cache_controller", :params => %w(id1 id2)).should be_false
|
89
|
+
|
90
|
+
c = get("/cache_controller/action4")
|
91
|
+
CACHE.expire_action(:key => "/cache_controller/action4")
|
92
|
+
CACHE.cached_action?(:key => "/cache_controller/action4").should be_false
|
93
|
+
c = get("/cache_controller/action4/id1/id2")
|
94
|
+
CACHE.expire_action(:key => "/cache_controller/action4", :params => %w(id1 id2))
|
95
|
+
CACHE.cached_action?(:key => "/cache_controller/action4", :params => %w(id1 id2)).should be_false
|
96
|
+
|
97
|
+
c = get("/cache_controller/action4/id1/id2")
|
98
|
+
CACHE.expire_action(:key => "/cache_controller/action4/id1", :match => true)
|
99
|
+
CACHE.cached_action?(:key => "/cache_controller/action4/id1/id2").should be_false
|
100
|
+
|
101
|
+
c = get("/cache_controller/action4/id1/id2")
|
102
|
+
CACHE.expire_action(:key => "/cache_controller/action4", :params => %w(id1), :match => true)
|
103
|
+
CACHE.cached_action?(:key => "/cache_controller/action4/id1/id2").should be_false
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should allow :if conditions with procs" do
|
107
|
+
c = get("/cache_controller/action8")
|
108
|
+
CACHE.cached_action?(:key => "/cache_controller/action8").should be_false
|
109
|
+
|
110
|
+
c = get("/cache_controller/action8/cache")
|
111
|
+
CACHE.cached_action?(:key => "/cache_controller/action8/cache").should be_true
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should allow :unless conditions with procs" do
|
115
|
+
c = get("/cache_controller/action9")
|
116
|
+
CACHE.cached_action?(:key => "/cache_controller/action9").should be_false
|
117
|
+
|
118
|
+
c = get("/cache_controller/action9/cache")
|
119
|
+
CACHE.cached_action?(:key => "/cache_controller/action9/cache").should be_true
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should allow :if conditions with symbols" do
|
123
|
+
c = get("/cache_controller/action10")
|
124
|
+
CACHE.cached_action?(:key => "/cache_controller/action10").should be_false
|
125
|
+
|
126
|
+
c = get("/cache_controller/action10/cache")
|
127
|
+
CACHE.cached_action?(:key => "/cache_controller/action10/cache").should be_true
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should allow :unless conditions with symbols" do
|
131
|
+
c = get("/cache_controller/action11")
|
132
|
+
CACHE.cached_action?(:key => "/cache_controller/action11").should be_false
|
133
|
+
|
134
|
+
c = get("/cache_controller/action11/cache")
|
135
|
+
CACHE.cached_action?(:key => "/cache_controller/action11/cache").should be_true
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# TODO
|
2
|
+
# more specs for fragment caching:
|
3
|
+
# cache_get, cache_set, cached?, cache, expire
|
4
|
+
|
5
|
+
describe "merb-cache-fragment" do
|
6
|
+
|
7
|
+
it "should render index" do
|
8
|
+
c = dispatch_to(CacheController, :index)
|
9
|
+
c.body.should == "test index"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should cache the fragment (erb capture/concat)" do
|
13
|
+
c = dispatch_to(CacheController, :action1)
|
14
|
+
NOW = c.body.strip
|
15
|
+
c.cache_get("key1").strip.should == NOW
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should cache the fragment (haml capture/concat)" do
|
19
|
+
c = dispatch_to(CacheController, :action2)
|
20
|
+
now = c.body.strip
|
21
|
+
c.cache_get("key11").strip.should == now
|
22
|
+
sleep 1
|
23
|
+
c = dispatch_to(CacheController, :action2)
|
24
|
+
c.cache_get("key11").strip.should == now
|
25
|
+
c.expire("key11")
|
26
|
+
c.cache_get("key11").should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should use the fragment" do
|
30
|
+
sleep 1
|
31
|
+
c = dispatch_to(CacheController, :action1)
|
32
|
+
c.body.strip.should == NOW
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should expire the fragment" do
|
36
|
+
CACHE.expire("key1")
|
37
|
+
CACHE.cache_get("key1").should be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should refresh the template" do
|
41
|
+
c = dispatch_to(CacheController, :action1)
|
42
|
+
c.body.strip.should_not == NOW
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should return nil for unknown keys" do
|
46
|
+
CACHE.cache_get("unknown_key").should be_nil
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should expire matching keys" do
|
50
|
+
CACHE.cache_set("test1", "test1")
|
51
|
+
CACHE.cache_get("test1").should == "test1"
|
52
|
+
CACHE.cache_set("test2", "test2")
|
53
|
+
CACHE.cache_get("test2").should == "test2"
|
54
|
+
CACHE.cache_set("test3", "test3")
|
55
|
+
CACHE.cache_get("test3").should == "test3"
|
56
|
+
CACHE.expire(:match => "test")
|
57
|
+
CACHE.cache_get("test1").should be_nil
|
58
|
+
CACHE.cache_get("test2").should be_nil
|
59
|
+
CACHE.cache_get("test3").should be_nil
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should expire entry after 3 seconds" do
|
63
|
+
CACHE.cache_set("timed_key", "vanish in 3 seconds", 0.05)
|
64
|
+
CACHE.cache_get("timed_key").should == "vanish in 3 seconds"
|
65
|
+
sleep 3.5
|
66
|
+
CACHE.cache_get("timed_key").should be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should expire in many ways" do
|
70
|
+
CACHE.cache_set("test1", "test1")
|
71
|
+
CACHE.expire("test1")
|
72
|
+
CACHE.cache_get("test1").should be_nil
|
73
|
+
|
74
|
+
CACHE.cache_set("test2/id1", "test2")
|
75
|
+
CACHE.expire(:key => "test2", :params => %w(id1))
|
76
|
+
CACHE.cache_get("test2/id1").should be_nil
|
77
|
+
|
78
|
+
CACHE.cache_set("test3", "test3")
|
79
|
+
CACHE.expire(:key => "test3")
|
80
|
+
CACHE.cache_get("test3").should be_nil
|
81
|
+
|
82
|
+
CACHE.cache_set("test4/id1", "test4")
|
83
|
+
CACHE.expire(:key => "test4", :params => %w(id1), :match => true)
|
84
|
+
CACHE.cache_get("test4/id1/id2").should be_nil
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should expire all keys" do
|
88
|
+
CACHE.expire_all
|
89
|
+
CACHE.cache_get("key1").should be_nil
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should cache/restore ruby objects" do
|
93
|
+
now = Time.now
|
94
|
+
data = {:key1 => "key1", :key2 => "key2", :now => Time.now }
|
95
|
+
CACHE.cache_set("key1", data)
|
96
|
+
_data = CACHE.cache_get("key1")
|
97
|
+
data.should == _data
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
describe "merb-cache-page" do
|
2
|
+
|
3
|
+
it "should cache page (action5)" do
|
4
|
+
c = get("/cache_controller/action5")
|
5
|
+
c.body.strip.should == "test action5"
|
6
|
+
c.cached_page?("action5").should be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should expire page (action5)" do
|
10
|
+
CACHE.expire_page("action5")
|
11
|
+
CACHE.cached_page?("action5").should be_false
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should cache page (action5) with full path" do
|
15
|
+
c = get("/cache_controller/action5/this/is/a/test")
|
16
|
+
c.cached_page?(:action => "action5", :params => %w(this is a test)).should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should expire page (action5) with full path" do
|
20
|
+
CACHE.expire_page(:action => "action5",
|
21
|
+
:controller => "cache_controller",
|
22
|
+
:params => %w(this is a test))
|
23
|
+
CACHE.cached_page?(:key => "/cache_controller/action5/this/is/a/test").should be_false
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should cache page (action6), use it and expire 3 seconds after" do
|
27
|
+
CACHE.expire_page :match => true, :action => "action6"
|
28
|
+
c = get("/cache_controller/action6")
|
29
|
+
now = Time.now.to_s
|
30
|
+
c.body.strip.should == now
|
31
|
+
c.cached_page?("action6").should be_true
|
32
|
+
sleep 1
|
33
|
+
c = get("/cache_controller/action6")
|
34
|
+
c.body.strip.should == now
|
35
|
+
sleep 2
|
36
|
+
c = get("/cache_controller/action6")
|
37
|
+
c.body.strip.should == Time.now.to_s
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should cache page with full path (action6) and expire in 3 seconds" do
|
41
|
+
CACHE.expire_page "action6"
|
42
|
+
CACHE.cached_page?(:action => "action6", :params => %w(path to nowhere)).should be_false
|
43
|
+
c = get("/cache_controller/action6/path/to/nowhere/")
|
44
|
+
now = Time.now.to_s
|
45
|
+
c.body.strip.should == now
|
46
|
+
c.cached_page?(:action => "action6", :params => %w(path to nowhere)).should be_true
|
47
|
+
sleep 1
|
48
|
+
c = get("/cache_controller/action6/path/to/nowhere")
|
49
|
+
c.body.strip.should == now
|
50
|
+
sleep 2
|
51
|
+
c = get("/cache_controller/action6/path/to/nowhere")
|
52
|
+
c.body.strip.should == Time.now.to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should expire page in many ways" do
|
56
|
+
c = get("/cache_controller/action6")
|
57
|
+
CACHE.expire_page("action6")
|
58
|
+
CACHE.cached_page?("action6").should be_false
|
59
|
+
|
60
|
+
c = get("/cache_controller/action6")
|
61
|
+
CACHE.expire_page(:match => "/cache_control")
|
62
|
+
CACHE.cached_page?(:action => "action6").should be_false
|
63
|
+
|
64
|
+
c = get("/cache_controller/action6")
|
65
|
+
CACHE.expire_page(:action => "action6")
|
66
|
+
CACHE.cached_page?(:action => "action6").should be_false
|
67
|
+
|
68
|
+
c = get("/cache_controller/action6/id1/id2")
|
69
|
+
CACHE.expire_page(:action => "action6", :params => %w(id1 id2))
|
70
|
+
CACHE.cached_page?(:action => "action6", :params => %w(id1 id2)).should be_false
|
71
|
+
|
72
|
+
c = get("/cache_controller/action6/id1/id2")
|
73
|
+
CACHE.expire_page(:action => "action6", :match => true)
|
74
|
+
CACHE.cached_page?(:action => "action6", :params => %w(id1 id2)).should be_false
|
75
|
+
|
76
|
+
c = get("/cache_controller/action6")
|
77
|
+
CACHE.expire_page(:action => "action6", :controller => "cache_controller")
|
78
|
+
CACHE.cached_page?(:action => "action6", :controller => "cache_controller").should be_false
|
79
|
+
|
80
|
+
c = get("/cache_controller/action6/id1/id2")
|
81
|
+
CACHE.expire_page(:action => "action6", :params => %w(id1), :match => true)
|
82
|
+
CACHE.cached_page?(:action => "action6", :params => %w(id1 id2)).should be_false
|
83
|
+
|
84
|
+
c = get("/cache_controller/action6/id1/id2")
|
85
|
+
CACHE.expire_page(:action => "action6", :controller => "cache_controller", :match => true)
|
86
|
+
CACHE.cached_page?(:action => "action6", :params => %w(id1 id2)).should be_false
|
87
|
+
|
88
|
+
c = get("/cache_controller/action6/id1/id2")
|
89
|
+
CACHE.expire_page(:action => "action6", :controller => "cache_controller", :params => %w(id1), :match => true)
|
90
|
+
CACHE.cached_page?(:action => "action6", :params => %w(id1 id2)).should be_false
|
91
|
+
|
92
|
+
c = get("/cache_controller/action6/id1/id2")
|
93
|
+
CACHE.expire_page(:action => "action6", :controller => "cache_controller", :params => %w(id1 id2))
|
94
|
+
CACHE.cached_page?(:action => "action6", :controller => "cache_controller", :params => %w(id1 id2)).should be_false
|
95
|
+
|
96
|
+
c = get("/cache_controller/action6")
|
97
|
+
CACHE.expire_page(:key => "/cache_controller/action6")
|
98
|
+
CACHE.cached_page?(:key => "/cache_controller/action6").should be_false
|
99
|
+
c = get("/cache_controller/action6/id1/id2")
|
100
|
+
CACHE.expire_page(:key => "/cache_controller/action6", :params => %w(id1 id2))
|
101
|
+
CACHE.cached_page?(:key => "/cache_controller/action6", :params => %w(id1 id2)).should be_false
|
102
|
+
|
103
|
+
c = get("/cache_controller/action6/id1/id2")
|
104
|
+
CACHE.expire_page(:key => "/cache_controller/action6/id1", :match => true)
|
105
|
+
CACHE.cached_page?(:key => "/cache_controller/action6/id1/id2").should be_false
|
106
|
+
|
107
|
+
c = get("/cache_controller/action6/id1/id2")
|
108
|
+
CACHE.expire_page(:key => "/cache_controller/action6", :params => %w(id1), :match => true)
|
109
|
+
CACHE.cached_page?(:key => "/cache_controller/action6/id1/id2").should be_false
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should respect original content-type" do
|
113
|
+
c = get("/cache_controller/action7.css")
|
114
|
+
c.body.should == "CSS"
|
115
|
+
c = get("/cache_controller/action7.css")
|
116
|
+
c.params[:format].should == "css"
|
117
|
+
c.cached_page?(:action => "action7", :extension => 'css').should be_true
|
118
|
+
|
119
|
+
c = get("/cache_controller/action7.js")
|
120
|
+
c.body.should == "JS"
|
121
|
+
c = get("/cache_controller/action7.js")
|
122
|
+
c.params[:format].should == "js"
|
123
|
+
c.cached_page?(:action => "action7", :extension => 'js').should be_true
|
124
|
+
|
125
|
+
c = get("/cache_controller/action7.xml")
|
126
|
+
c.body.should == "XML"
|
127
|
+
c = get("/cache_controller/action7.xml")
|
128
|
+
c.params[:format].should == "xml"
|
129
|
+
c.cached_page?(:action => "action7", :extension => 'xml').should be_true
|
130
|
+
|
131
|
+
c = get("/cache_controller/action7.jpg")
|
132
|
+
c.body.should == "JPG"
|
133
|
+
c = get("/cache_controller/action7.jpg")
|
134
|
+
c.params[:format].should == "jpg"
|
135
|
+
c.cached_page?(:action => "action7", :extension => 'jpg').should be_true
|
136
|
+
|
137
|
+
c = get("/cache_controller/action7.html")
|
138
|
+
c.body.should == "HTML"
|
139
|
+
c = get("/cache_controller/action7.html")
|
140
|
+
c.params[:format].should == "html"
|
141
|
+
c.cached_page?(:action => "action7").should be_true
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should expire all pages" do
|
145
|
+
CACHE.expire_all_pages
|
146
|
+
CACHE.cached_page?("action6").should be_false
|
147
|
+
Dir.glob(Merb::Controller._cache.config[:cache_html_directory] + '/*').should be_empty
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
Merb::Router.prepare do |r|
|
4
|
+
r.default_routes
|
5
|
+
r.match("/").to(:controller => "cache_controller", :action =>"index")
|
6
|
+
end
|
7
|
+
|
8
|
+
CACHE = CacheController.new(Merb::Test::RequestHelper::FakeRequest.new)
|
9
|
+
CACHE.expire_all
|
10
|
+
|
11
|
+
puts "Using #{CACHE._cache.store.cache_store_type.inspect} store"
|
12
|
+
|
13
|
+
require File.dirname(__FILE__) + "/merb-cache-fragment_spec"
|
14
|
+
require File.dirname(__FILE__) + "/merb-cache-action_spec"
|
15
|
+
require File.dirname(__FILE__) + "/merb-cache-page_spec"
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
$TESTING=true
|
2
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
3
|
+
require "rubygems"
|
4
|
+
require "merb-core"
|
5
|
+
|
6
|
+
require "merb-cache"
|
7
|
+
require File.dirname(__FILE__) / "controller"
|
8
|
+
|
9
|
+
require "merb-haml"
|
10
|
+
|
11
|
+
def set_database_adapter(adapter)
|
12
|
+
config_file = File.dirname(__FILE__) / "config/database.yml"
|
13
|
+
config = IO.read(config_file)
|
14
|
+
config.gsub!(/:adapter:\s+.*$/, ":adapter: #{adapter}")
|
15
|
+
File.open(config_file, "w+") do |c| c.write(config) end
|
16
|
+
end
|
17
|
+
|
18
|
+
def use_cache_store(store, orm = nil)
|
19
|
+
Merb::Plugins.config[:merb_cache] = {
|
20
|
+
:store => store,
|
21
|
+
:cache_directory => File.dirname(__FILE__) / "tmp/cache",
|
22
|
+
:cache_html_directory => File.dirname(__FILE__) / "tmp/html",
|
23
|
+
:no_tracking => false
|
24
|
+
}
|
25
|
+
FileUtils.rm_rf(Dir.glob(File.dirname(__FILE__) / "/tmp"))
|
26
|
+
case store
|
27
|
+
when "dummy"
|
28
|
+
when "file"
|
29
|
+
when "memory"
|
30
|
+
when "memcache"
|
31
|
+
require "memcache"
|
32
|
+
when "database"
|
33
|
+
case orm
|
34
|
+
when "datamapper"
|
35
|
+
Merb.environment = "test"
|
36
|
+
Merb.logger = Merb::Logger.new("log/merb_test.log")
|
37
|
+
set_database_adapter("sqlite3")
|
38
|
+
require "merb_datamapper"
|
39
|
+
when "activerecord"
|
40
|
+
Merb.logger = Merb::Logger.new("log/merb_test.log")
|
41
|
+
set_database_adapter("sqlite3")
|
42
|
+
require "merb_activerecord"
|
43
|
+
when "sequel"
|
44
|
+
set_database_adapter("sqlite")
|
45
|
+
require "merb_sequel"
|
46
|
+
else
|
47
|
+
raise "Unknown orm: #{orm}"
|
48
|
+
end
|
49
|
+
else
|
50
|
+
raise "Unknown cache store: #{store}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
store = "file"
|
55
|
+
case ENV["STORE"] || store
|
56
|
+
when "file"
|
57
|
+
use_cache_store "file"
|
58
|
+
when "memory"
|
59
|
+
use_cache_store "memory"
|
60
|
+
when "memcache"
|
61
|
+
use_cache_store "memcache"
|
62
|
+
when "datamapper"
|
63
|
+
use_cache_store "database", "datamapper"
|
64
|
+
when "sequel"
|
65
|
+
use_cache_store "database", "sequel"
|
66
|
+
when "activerecord"
|
67
|
+
use_cache_store "database", "activerecord"
|
68
|
+
when "dummy"
|
69
|
+
use_cache_store "dummy"
|
70
|
+
else
|
71
|
+
puts "Invalid cache store: #{ENV["store"]}"
|
72
|
+
exit
|
73
|
+
end
|
74
|
+
|
75
|
+
require "fileutils"
|
76
|
+
FileUtils.mkdir_p(Merb::Plugins.config[:merb_cache][:cache_html_directory])
|
77
|
+
FileUtils.mkdir_p(Merb::Plugins.config[:merb_cache][:cache_directory])
|
78
|
+
|
79
|
+
Merb.start :environment => "test", :adapter => "runner"
|
80
|
+
|
81
|
+
require "merb-core/test"
|
82
|
+
Spec::Runner.configure do |config|
|
83
|
+
config.include Merb::Test::RequestHelper
|
84
|
+
end
|