sinatra-cache 0.3.1 → 0.3.2
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/VERSION +1 -1
- data/lib/sinatra/cache.rb +1 -1
- data/lib/sinatra/templates.rb +2 -2
- data/sinatra-cache.gemspec +2 -2
- data/spec/sinatra/cache_spec.rb +94 -27
- data/spec/spec_helper.rb +4 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/sinatra/cache.rb
CHANGED
data/lib/sinatra/templates.rb
CHANGED
@@ -26,7 +26,7 @@ module Sinatra
|
|
26
26
|
cache_enabled = settings.respond_to?(:cache_enabled) ? settings.send(:cache_enabled) : false
|
27
27
|
cache_output_dir = settings.send(:cache_output_dir) if settings.respond_to?(:cache_output_dir)
|
28
28
|
# raise Exception, "The Sinatra::Cache cache_output_dir variable is pointing to a non-existant directory cache_output_dir=[#{cache_output_dir}]" unless test(?d, cache_output_dir)
|
29
|
-
cache_option = options
|
29
|
+
cache_option = options[:cache]
|
30
30
|
cache_option = true if cache_option.nil?
|
31
31
|
|
32
32
|
# compile and render template
|
@@ -39,7 +39,7 @@ module Sinatra
|
|
39
39
|
options = options.merge(:views => views, :layout => false)
|
40
40
|
output = render(engine, layout, options, locals) { output }
|
41
41
|
# Cache the content or just return it
|
42
|
-
(cache_enabled && settings.send(:environment) == settings.cache_environment) ?
|
42
|
+
(cache_enabled && cache_option && settings.send(:environment) == settings.cache_environment) ?
|
43
43
|
cache_write_file(cache_file_path, output.gsub(/\n\r?$/,"")) : output
|
44
44
|
rescue Errno::ENOENT
|
45
45
|
end
|
data/sinatra-cache.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sinatra-cache}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["kematzy"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-27}
|
13
13
|
s.description = %q{A Sinatra Extension that makes Page and Fragment Caching easy.}
|
14
14
|
s.email = %q{kematzy@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/spec/sinatra/cache_spec.rb
CHANGED
@@ -21,8 +21,16 @@ describe "Sinatra" do
|
|
21
21
|
|
22
22
|
set :cache_enabled, true
|
23
23
|
set :cache_environment, :test
|
24
|
-
set :cache_output_dir, "#{
|
25
|
-
set :cache_fragments_output_dir, "#{
|
24
|
+
set :cache_output_dir, "#{test_cache_path('system/cache')}"
|
25
|
+
set :cache_fragments_output_dir, "#{test_cache_path('system/cache')}_fragments"
|
26
|
+
|
27
|
+
# NB! Although without tests, the positioning of the custom method in relation to other
|
28
|
+
# Cache related declaration has no effect.
|
29
|
+
helpers do
|
30
|
+
def uncached_erb(template, options={})
|
31
|
+
erb(template, options.merge(:cache => false ))
|
32
|
+
end
|
33
|
+
end
|
26
34
|
|
27
35
|
get('/') { erb(:index) }
|
28
36
|
get('/erb/?') { erb(:index, :layout => false) }
|
@@ -46,6 +54,11 @@ describe "Sinatra" do
|
|
46
54
|
end
|
47
55
|
end
|
48
56
|
|
57
|
+
## NO CACHING
|
58
|
+
get('/uncached/erb'){ erb(:index, :cache => false) }
|
59
|
+
get('/uncached/erb/no/layout'){ erb(:index, :cache => false, :layout => false ) }
|
60
|
+
get('/uncached/uncached_erb'){ uncached_erb(:index) }
|
61
|
+
|
49
62
|
get '/css/screen.css' do
|
50
63
|
content_type 'text/css'
|
51
64
|
sass(:css, :style => :compact)
|
@@ -144,11 +157,11 @@ describe "Sinatra" do
|
|
144
157
|
end
|
145
158
|
|
146
159
|
it "should set :cache_output_dir to '../public/system/cache'" do
|
147
|
-
MyTestApp.cache_output_dir.should == "#{
|
160
|
+
MyTestApp.cache_output_dir.should == "#{test_cache_path('system/cache')}"
|
148
161
|
end
|
149
162
|
|
150
163
|
it "should set :cache_fragments_output_dir to '../public/system/cache_fragments'" do
|
151
|
-
MyTestApp.cache_fragments_output_dir.should == "#{
|
164
|
+
MyTestApp.cache_fragments_output_dir.should == "#{test_cache_path('system/cache')}_fragments"
|
152
165
|
end
|
153
166
|
|
154
167
|
it "should set :cache_logging to true" do
|
@@ -215,7 +228,7 @@ describe "Sinatra" do
|
|
215
228
|
describe "the Home page - ['/' => /index.html] (with layout)" do
|
216
229
|
|
217
230
|
before(:each) do
|
218
|
-
@cache_file = "#{
|
231
|
+
@cache_file = "#{test_cache_path('system/cache')}/index.html"
|
219
232
|
get('/')
|
220
233
|
end
|
221
234
|
|
@@ -238,7 +251,7 @@ describe "Sinatra" do
|
|
238
251
|
describe "a basic URL without a trailing slash - ['/erb' => /erb.html] (ERB without layout)" do
|
239
252
|
|
240
253
|
before(:each) do
|
241
|
-
@cache_file = "#{
|
254
|
+
@cache_file = "#{test_cache_path('system/cache')}/erb.html"
|
242
255
|
get('/erb')
|
243
256
|
end
|
244
257
|
|
@@ -259,7 +272,7 @@ describe "Sinatra" do
|
|
259
272
|
describe "a basic URL with a trailing slash - ['/erb/' => /erb/index.html]" do
|
260
273
|
|
261
274
|
before(:each) do
|
262
|
-
@cache_file = "#{
|
275
|
+
@cache_file = "#{test_cache_path('system/cache')}/erb/index.html"
|
263
276
|
get('/erb/')
|
264
277
|
end
|
265
278
|
|
@@ -281,7 +294,7 @@ describe "Sinatra" do
|
|
281
294
|
|
282
295
|
before(:each) do
|
283
296
|
ext = '.yaml'
|
284
|
-
@cache_file = "#{
|
297
|
+
@cache_file = "#{test_cache_path('system/cache')}/file-extensions#{ext}"
|
285
298
|
get("/file-extensions#{ext}")
|
286
299
|
end
|
287
300
|
|
@@ -317,14 +330,14 @@ describe "Sinatra" do
|
|
317
330
|
|
318
331
|
before(:each) do
|
319
332
|
@file_url = file_url
|
320
|
-
@cache_file = "#{
|
333
|
+
@cache_file = "#{test_cache_path('system/cache')}#{file_url}"
|
321
334
|
@cache_file << ".html" if File.extname(@file_url) == ''
|
322
335
|
# puts "when the URL=[#{url}] the @cache_file=[#{@cache_file}] [#{__FILE__}:#{__LINE__}]"
|
323
336
|
get(url)
|
324
337
|
end
|
325
338
|
|
326
339
|
after(:each) do
|
327
|
-
FileUtils.remove_dir("#{
|
340
|
+
FileUtils.remove_dir("#{test_cache_path('system/cache')}/params") if @delete_cached_test_files
|
328
341
|
end
|
329
342
|
|
330
343
|
it "should render the expected output" do
|
@@ -343,12 +356,66 @@ describe "Sinatra" do
|
|
343
356
|
|
344
357
|
end #/ URLs with multiple levels and/or with ?params attached
|
345
358
|
|
359
|
+
describe "with :cache => false, :layout => false " do
|
360
|
+
|
361
|
+
before(:each) do
|
362
|
+
@cache_file = "#{test_cache_path('system/cache')}/uncached/erb/no/layout.html"
|
363
|
+
get('/uncached/erb/no/layout')
|
364
|
+
end
|
365
|
+
|
366
|
+
it "should output the correct HTML as expected" do
|
367
|
+
body.should have_tag('h1', 'HOME')
|
368
|
+
end
|
369
|
+
|
370
|
+
it "should NOT cache the output" do
|
371
|
+
test(?d, File.dirname(@cache_file) ).should == false # testing for directory
|
372
|
+
test(?f, @cache_file).should == false
|
373
|
+
end
|
374
|
+
|
375
|
+
end #/ with :cache => false, :layout => false
|
376
|
+
|
377
|
+
describe "with :cache => false" do
|
378
|
+
|
379
|
+
before(:each) do
|
380
|
+
@cache_file = "#{test_cache_path('system/cache')}/uncached/erb.html"
|
381
|
+
get('/uncached/erb')
|
382
|
+
end
|
383
|
+
|
384
|
+
it "should output the correct HTML as expected" do
|
385
|
+
body.should have_tag('h1', 'HOME')
|
386
|
+
end
|
387
|
+
|
388
|
+
it "should NOT cache the output" do
|
389
|
+
test(?d, File.dirname(@cache_file) ).should == false # testing for directory
|
390
|
+
test(?f, @cache_file).should == false
|
391
|
+
end
|
392
|
+
|
393
|
+
end #/ with :cache => false
|
394
|
+
|
395
|
+
describe "URLs with custom erb helpers, like :admin_erb().." do
|
396
|
+
|
397
|
+
before(:each) do
|
398
|
+
@cache_file = "#{test_cache_path('system/cache')}/uncached/uncached_erb.html"
|
399
|
+
get('/uncached/uncached_erb')
|
400
|
+
end
|
401
|
+
|
402
|
+
it "should output the correct HTML as expected" do
|
403
|
+
body.should have_tag('html > body > h1', 'HOME')
|
404
|
+
end
|
405
|
+
|
406
|
+
it "should NOT cache the output" do
|
407
|
+
test(?d, File.dirname(@cache_file) ).should == false # testing for directory
|
408
|
+
test(?f, @cache_file).should == false
|
409
|
+
end
|
410
|
+
|
411
|
+
end #/ URLs with custom erb helpers, like :admin_erb()..
|
412
|
+
|
346
413
|
describe "CSS URLs with dynamic .sass files" do
|
347
414
|
|
348
415
|
describe "the URL ['/css/screen.css' => /css/screen.css]" do
|
349
416
|
|
350
417
|
before(:each) do
|
351
|
-
@cache_file = "#{
|
418
|
+
@cache_file = "#{test_cache_path('system/cache')}/css/screen.css"
|
352
419
|
FileUtils.remove_dir(File.dirname(@cache_file), :force => true )
|
353
420
|
get('/css/screen.css')
|
354
421
|
end
|
@@ -375,7 +442,7 @@ describe "Sinatra" do
|
|
375
442
|
describe "URLs with ':cache => false' - ['/css/no/cache.css' => /css/no/cache.css]" do
|
376
443
|
|
377
444
|
before(:each) do
|
378
|
-
@cache_file = "#{
|
445
|
+
@cache_file = "#{test_cache_path('system/cache')}/css/no/cache.css"
|
379
446
|
get('/css/no/cache.css')
|
380
447
|
end
|
381
448
|
|
@@ -399,7 +466,7 @@ describe "Sinatra" do
|
|
399
466
|
describe "POST '/post'" do
|
400
467
|
|
401
468
|
before(:each) do
|
402
|
-
@cache_file = "#{
|
469
|
+
@cache_file = "#{test_cache_path('system/cache')}/post.html"
|
403
470
|
post('/post', :test => {:name => "test-#{Time.now.strftime("%Y-%d-%m %H:%M:%S")}", :content => "with content" })
|
404
471
|
end
|
405
472
|
|
@@ -416,7 +483,7 @@ describe "Sinatra" do
|
|
416
483
|
describe "PUT '/put'" do
|
417
484
|
|
418
485
|
before(:each) do
|
419
|
-
@cache_file = "#{
|
486
|
+
@cache_file = "#{test_cache_path('system/cache')}/put.html"
|
420
487
|
put('/put', { :test => { :name => "test" }, :_method => "put" })
|
421
488
|
end
|
422
489
|
|
@@ -433,7 +500,7 @@ describe "Sinatra" do
|
|
433
500
|
describe "DELETE '/delete'" do
|
434
501
|
|
435
502
|
before(:each) do
|
436
|
-
@cache_file = "#{
|
503
|
+
@cache_file = "#{test_cache_path('system/cache')}/delete.html"
|
437
504
|
delete('/delete') #, { :test => { :name => "test" }, :_method => "put" })
|
438
505
|
end
|
439
506
|
|
@@ -456,7 +523,7 @@ describe "Sinatra" do
|
|
456
523
|
describe "using NOT shared fragments" do
|
457
524
|
|
458
525
|
after(:all) do
|
459
|
-
FileUtils.rm_r("#{
|
526
|
+
FileUtils.rm_r("#{test_cache_path('system/cache')}_fragments/fragments") if @delete_cached_test_files
|
460
527
|
end
|
461
528
|
|
462
529
|
%w(
|
@@ -482,7 +549,7 @@ describe "Sinatra" do
|
|
482
549
|
|
483
550
|
# the cached fragment has already been found if we get this far,
|
484
551
|
# but just for good measure do we check for the existence of the fragment file.
|
485
|
-
test(?f, "#{
|
552
|
+
test(?f, "#{test_cache_path('system/cache')}_fragments/#{dir_structure}/test_fragment.html").should == true
|
486
553
|
end
|
487
554
|
end
|
488
555
|
|
@@ -491,7 +558,7 @@ describe "Sinatra" do
|
|
491
558
|
describe "using shared fragments" do
|
492
559
|
|
493
560
|
after(:all) do
|
494
|
-
FileUtils.rm_r("#{
|
561
|
+
FileUtils.rm_r("#{test_cache_path('system/cache')}_fragments/sharedfragments") if @delete_cached_test_files
|
495
562
|
end
|
496
563
|
|
497
564
|
describe "when requesting the first URL" do
|
@@ -518,7 +585,7 @@ describe "Sinatra" do
|
|
518
585
|
|
519
586
|
# the cached fragment has already been found if we get this far,
|
520
587
|
# but just for good measure do we check for the existence of the fragment file.
|
521
|
-
test(?f, "#{
|
588
|
+
test(?f, "#{test_cache_path('system/cache')}_fragments/#{dir_structure}/test_fragment.html").should == true
|
522
589
|
|
523
590
|
# should use the cached fragment rather than cache a new fragment
|
524
591
|
url = '/sharedfragments/2010/02/another-article-02'
|
@@ -540,23 +607,23 @@ describe "Sinatra" do
|
|
540
607
|
|
541
608
|
it "should expire the page ['/params/cache/expire/' => ../cache/params/cache/expire/index.html]" do
|
542
609
|
get('/params/cache/expire/')
|
543
|
-
test(?f,"#{
|
610
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache/expire/index.html" ).should == true
|
544
611
|
lambda {
|
545
612
|
erb_app "<% cache_expire('/params/cache/expire/') %>"
|
546
613
|
}.should_not raise_error(Exception)
|
547
614
|
|
548
|
-
test(?f,"#{
|
615
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache/expire/index.html" ).should == false
|
549
616
|
|
550
617
|
end
|
551
618
|
|
552
619
|
it "should expire the page ['/params/cache/expired' => ../cache/params/cache/expired.html]" do
|
553
620
|
get('/params/cache/expired')
|
554
|
-
test(?f,"#{
|
621
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache/expired.html" ).should == true
|
555
622
|
lambda {
|
556
623
|
erb_app "<% cache_expire('/params/cache/expired') %>"
|
557
624
|
}.should_not raise_error(Exception)
|
558
625
|
|
559
|
-
test(?f,"#{
|
626
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache/expired.html" ).should == false
|
560
627
|
|
561
628
|
end
|
562
629
|
|
@@ -566,20 +633,20 @@ describe "Sinatra" do
|
|
566
633
|
|
567
634
|
it "should expire the fragment ['/fragments/cache/expire/' => ../cache_fragments/fragments/cache/expire/test_fragment.html]" do
|
568
635
|
get('/fragments/cache/expire/')
|
569
|
-
test(?f,"#{
|
636
|
+
test(?f,"#{test_cache_path('system/cache')}_fragments/fragments/cache/expire/test_fragment.html" ).should == true
|
570
637
|
lambda {
|
571
638
|
erb_app "<% cache_expire('/fragments/cache/expire/',:fragment => :test_fragment) %>"
|
572
639
|
}.should_not raise_error(Exception)
|
573
|
-
test(?f,"#{
|
640
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache_fragments/expire/test_fragment.html" ).should == false
|
574
641
|
end
|
575
642
|
|
576
643
|
it "should expire the fragment ['/fragments/cache/expired' => ../cache_fragments/fragments/cache/expired/test_fragment.html]" do
|
577
644
|
get('/fragments/cache/expired')
|
578
|
-
test(?f,"#{
|
645
|
+
test(?f,"#{test_cache_path('system/cache')}_fragments/fragments/cache/expired/test_fragment.html" ).should == true
|
579
646
|
lambda {
|
580
647
|
erb_app "<% cache_expire('/fragments/cache/expired',:fragment => :test_fragment) %>"
|
581
648
|
}.should_not raise_error(Exception)
|
582
|
-
test(?f,"#{
|
649
|
+
test(?f,"#{test_cache_path('system/cache')}/params/cache_fragments/expired/test_fragment.html" ).should == false
|
583
650
|
end
|
584
651
|
|
585
652
|
end #/ Pages
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- kematzy
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-27 00:00:00 +08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|