kematzy-sinatra-cache 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,26 +2,43 @@ h1. Sinatra::Cache
2
2
 
3
3
  Adds a very *simple* Page Caching functionality to "Sinatra":http://www.sinatrarb.com/
4
4
 
5
- <div style="background: #EED367; padding: 10px 5px; border: 1px solid #D7C36C; text-align: center;">
6
- *NB!* Unfinished work, so use with care.
7
- <br>
5
+ <hr>
6
+
7
+ h3. *PLEASE KEEP THIS IN MIND*
8
+
9
+ This is *unfinished work*, so use with care.
8
10
 
9
11
  If you find it lacking or badly coded, please feel free to fork and improve. I'll be very happy :)
10
- </div>
12
+
13
+ <hr>
11
14
 
12
15
 
13
- h3. TODOs
16
+ h3. TODO's
14
17
 
15
- * Improve the logging output to the standard Sinatra output (if we are having :logging enabled )
16
- * Add fragment and action (?) caching...
17
- * Enable the options functionality for the <tt>:cache</tt> & <tt>:cache_expire</tt> methods, so that they can take custom extensions and more
18
18
 
19
+ = Make caching an option of the normal <tt>erb()/haml()/sass()</tt> methods, sort of like this:
20
+ <pre><code>
21
+ erb(:index, :cache => true/false)
22
+
23
+ # alternatively enable caching by setting a global config like this
24
+ set :cache_enabled_for :all || :only/except => ['/','/contact',...]
25
+
26
+ </code></pre>
19
27
 
20
- h3. Configuration
21
28
 
22
- *Example 1:*
29
+ = Improve the logging output to the standard Sinatra output (if we are having :logging enabled )
23
30
 
24
- Sinatra 'classic' app.
31
+ = Add fragment caching...
32
+
33
+ = Enable the options functionality for the <tt>:cache</tt> & <tt>:cache_expire</tt> methods, so that they can take custom extensions and more
34
+
35
+
36
+ <hr>
37
+
38
+
39
+ h3. CONFIGURATION
40
+
41
+ *Example 1: Sinatra 'classic' app.*
25
42
 
26
43
  <pre><code>
27
44
  <snip....>
@@ -32,41 +49,43 @@ Sinatra 'classic' app.
32
49
  # sets the default extension for cached files
33
50
  set :cache_page_extension, '.html'
34
51
  # sets the Cache dir to the root of the /public directory.
35
- set :cache_dir, ''
52
+ set :cache_output_dir, '' # was :cache_dir
36
53
  ...
37
54
  </code></pre>
38
55
 
39
- *Example 2:*
40
-
41
- Sinatra 'sub-classed' app.
56
+ *Example 2: Sinatra 'sub-classed' app.*
42
57
 
43
58
  <pre><code>
44
59
  <snip....>
45
60
  require 'sinatra/cache'
46
-
47
- class MyApp < Sinatra::Base
48
61
 
62
+ class MyApp < Sinatra::Base
63
+
49
64
  register Sinatra::Cache
50
-
65
+
51
66
  # toggle for the cache functionality.
52
67
  set :cache_enabled, true
53
68
  # sets the default extension for cached files
54
69
  set :cache_page_extension, '.html'
55
- # sets the Cache dir to the root of the /public directory.
56
- set :cache_dir, ''
57
-
70
+ # sets the Cache output dir to the root of the /public directory.
71
+ set :cache_output_dir, '' # was :cache_dir
72
+
58
73
  <snip....>
59
74
  </code></pre>
60
-
61
75
 
62
- h3. Usage
76
+
77
+ <hr>
78
+
79
+
80
+ h3. USAGE
81
+
63
82
 
64
83
  Basic Page Caching into static HTML files
65
84
 
66
85
  <pre><code>
67
86
  get '/contact' do
68
87
  # NB! options is currently not working
69
- cache( erb( :contact ), :options => 'go here' )
88
+ cache( erb( :contact ), :options => 'should go here' )
70
89
  end
71
90
  </code></pre>
72
91
 
@@ -82,11 +101,14 @@ Expiring old pages (ie: after POST or PUT events)
82
101
  See the "test":test/ and "test/fixtures":test/fixtures/ directories for more examples.
83
102
 
84
103
 
85
- h3. Default Options
104
+ <hr>
105
+
106
+
107
+ h3. DEFAULT OPTIONS
86
108
 
87
109
  * <tt>:cache_enabled</tt> => toggle for the cache functionality. Default is: <tt>true</tt>
88
110
  * <tt>:cache_page_extension</tt> => sets the default extension for cached files. Default is: <tt>.html</tt>
89
- * <tt>:cache_dir</tt> => sets cache directory where cached files are stored. Default is: ''(empty) == root of /public.<br>
111
+ * <tt>:cache_output_dir</tt> => sets cache directory where cached files are stored. Default is: ''(empty) == root of /public.<br>
90
112
  set to empty, since the ideal 'system/cache/' does not currently work with Passenger & mod_rewrite :(
91
113
  * <tt>:cache_logging</tt> => toggle for logging the cache calls. Default is: <tt>true</tt>
92
114
  * <tt>:cache_logging_level</tt> => sets the level of the cache logger. Default is: <tt>:info</tt>.<br>
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 2
4
- :patch: 1
4
+ :patch: 2
@@ -9,7 +9,7 @@ module Sinatra
9
9
  #
10
10
  module Cache
11
11
 
12
- VERSION = 'Sinatra::Cache v0.2.1'
12
+ VERSION = 'Sinatra::Cache v0.2.2'
13
13
  def self.version; VERSION; end
14
14
 
15
15
 
@@ -30,7 +30,7 @@ module Sinatra
30
30
  return content unless options.cache_enabled
31
31
 
32
32
  unless content.nil?
33
- content = "#{page_cached_timestamp}#{content}\n"
33
+ content = "#{content}\n#{page_cached_timestamp}"
34
34
  path = cache_page_path(request.path_info,opts)
35
35
  FileUtils.makedirs(File.dirname(path))
36
36
  open(path, 'wb+') { |f| f << content }
@@ -94,9 +94,9 @@ module Sinatra
94
94
  def cache_page_path(path,opts={})
95
95
  # test if given a full path rather than relative path, otherwise join the public path to cache_dir
96
96
  # and ensure it is a full path
97
- cache_dir = (options.cache_dir == File.expand_path(options.cache_dir)) ?
98
- options.cache_dir : File.expand_path("#{options.public}/#{options.cache_dir}")
99
- cache_dir = cache_dir[0..-2] if cache_dir[-1,1] == '/'
97
+ cache_dir = (options.cache_output_dir == File.expand_path(options.cache_output_dir)) ?
98
+ options.cache_output_dir : File.expand_path("#{options.public}/#{options.cache_output_dir}")
99
+ cache_dir = cache_output_dir[0..-2] if cache_dir[-1,1] == '/'
100
100
  "#{cache_dir}/#{cache_file_name(path,opts)}"
101
101
  end
102
102
 
@@ -127,7 +127,7 @@ module Sinatra
127
127
  app.helpers(Cache::Helpers)
128
128
  app.set :cache_enabled, true
129
129
  app.set :cache_page_extension, '.html'
130
- app.set :cache_dir, ''
130
+ app.set :cache_output_dir, ''
131
131
  app.set :cache_logging, true
132
132
  app.set :cache_logging_level, :info
133
133
  end
@@ -40,7 +40,7 @@ describe "Sinatra::Cache" do
40
40
 
41
41
  set :cache_enabled, false
42
42
  set :cache_page_extension, '.cache.html'
43
- set :cache_dir, 'system/cache'
43
+ set :cache_output_dir, 'system/cache'
44
44
  set :cache_logging, false
45
45
  set :cache_logging_level, :info
46
46
 
@@ -228,8 +228,8 @@ describe "Sinatra::Cache" do
228
228
  assert_equal('.html', @default_app.options.cache_page_extension)
229
229
  end
230
230
 
231
- it "the :cache_dir option should be correct ('') " do
232
- assert_equal('', @default_app.options.cache_dir)
231
+ it "the :cache_output_dir option should be correct ('') " do
232
+ assert_equal('', @default_app.options.cache_output_dir)
233
233
  end
234
234
 
235
235
  it "the :cache_logging option should be correct (true)" do
@@ -252,8 +252,8 @@ describe "Sinatra::Cache" do
252
252
  assert_equal('.cache.html', @custom_app.options.cache_page_extension)
253
253
  end
254
254
 
255
- it "the :cache_dir option should be correct ('system/cache') " do
256
- assert_equal('system/cache', @custom_app.options.cache_dir)
255
+ it "the :cache_output_dir option should be correct ('system/cache') " do
256
+ assert_equal('system/cache', @custom_app.options.cache_output_dir)
257
257
  end
258
258
 
259
259
  it "the :cache_logging option should be correct (true)" do
@@ -288,9 +288,9 @@ describe "Sinatra::Cache" do
288
288
  request = Rack::MockRequest.new(@default_app)
289
289
  response = request.get('/cache')
290
290
  assert response
291
- assert_match(/^<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\nHello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, response.body)
291
+ assert_match(/^Hello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, response.body)
292
292
  assert(test(?f, "#{public_fixtures_path}/cache.html"))
293
- assert_match(/^<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\nHello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, File.read("#{public_fixtures_path}/cache.html"))
293
+ assert_match(/^Hello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, File.read("#{public_fixtures_path}/cache.html"))
294
294
  end
295
295
 
296
296
  it "should expire the /cache page" do
@@ -334,7 +334,7 @@ describe "Sinatra::Cache" do
334
334
 
335
335
  set :cache_enabled, true
336
336
  set :cache_page_extension, '.cache.html'
337
- set :cache_dir, 'system/cache'
337
+ set :cache_output_dir, 'system/cache'
338
338
  set :cache_logging, true
339
339
  set :cache_logging_level, :info
340
340
 
@@ -360,9 +360,9 @@ describe "Sinatra::Cache" do
360
360
  request = Rack::MockRequest.new(@custom_enabled_app)
361
361
  response = request.get('/cache')
362
362
  assert response
363
- assert_match(/^<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\nHello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, response.body)
363
+ assert_match(/^Hello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\n$/, response.body)
364
364
  assert(test(?f, "#{public_fixtures_path}/system/cache/cache.cache.html"))
365
- assert_match(/^<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\nHello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n/, File.read("#{public_fixtures_path}/system/cache/cache.cache.html"))
365
+ assert_match(/^Hello World from Sinatra Version=\[\d\.\d\.\d(\.\d)?\]\n<!-- page cached: \d+-\d+-\d+ \d+:\d+:\d+ -->\n$/, File.read("#{public_fixtures_path}/system/cache/cache.cache.html"))
366
366
  end
367
367
 
368
368
  it "should expire the /cache page" do
@@ -392,7 +392,7 @@ describe "Sinatra::Cache" do
392
392
  describe "should respond to" do
393
393
 
394
394
  [
395
- "cache_dir", "cache_dir=","cache_dir?", "cache_enabled","cache_enabled=", "cache_enabled?",
395
+ "cache_output_dir", "cache_output_dir=","cache_output_dir?", "cache_enabled","cache_enabled=", "cache_enabled?",
396
396
  "cache_logging","cache_logging=","cache_logging?","cache_logging_level","cache_logging_level=","cache_logging_level?",
397
397
  "cache_page_extension","cache_page_extension=","cache_page_extension?"
398
398
  ].each do |m|
@@ -412,11 +412,11 @@ describe "Sinatra::Cache" do
412
412
  before do
413
413
  Sinatra::Base.register(Sinatra::Cache)
414
414
  end
415
-
415
+
416
416
  describe "should respond to" do
417
417
 
418
418
  [
419
- "cache_dir", "cache_dir=","cache_dir?", "cache_enabled","cache_enabled=", "cache_enabled?",
419
+ "cache_output_dir", "cache_output_dir=","cache_output_dir?", "cache_enabled","cache_enabled=", "cache_enabled?",
420
420
  "cache_logging","cache_logging=","cache_logging?","cache_logging_level","cache_logging_level=","cache_logging_level?",
421
421
  "cache_page_extension","cache_page_extension=","cache_page_extension?"
422
422
  ].each do |m|
@@ -431,20 +431,4 @@ describe "Sinatra::Cache" do
431
431
 
432
432
  end #/Sinatra::Default
433
433
 
434
- # it "should description" do
435
- # assert_equal('Sinatra::Application', Sinatra::Application.methods.sort)
436
- # end
437
- # it "should description1" do
438
- # assert_equal('Sinatra::Base', Sinatra::Base.methods.sort)
439
- # end
440
- # it "should description2" do
441
- # assert_equal('@default_app', @default_app.methods.sort)
442
- # end
443
- #
444
- # it "should description3" do
445
- # assert_equal('Sinatra::Default', Sinatra::Default.methods.sort)
446
- # end
447
-
448
-
449
-
450
434
  end #/Sinatra::Cache
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kematzy-sinatra-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kematzy