webs 0.1.36 → 0.1.37
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/Rakefile +1 -1
- data/lib/cache/cache.rb +50 -39
- data/lib/controller/webs_controller.rb +4 -1
- data/lib/webs.rb +1 -1
- data/webs.gemspec +2 -2
- metadata +2 -2
data/Rakefile
CHANGED
data/lib/cache/cache.rb
CHANGED
@@ -5,8 +5,8 @@ module Webs
|
|
5
5
|
mattr_accessor :off
|
6
6
|
|
7
7
|
def cache_remove(key)
|
8
|
-
Rails.logger.debug "*********** cache_remove(#{key})" if debug
|
9
|
-
return if key.nil?
|
8
|
+
Rails.logger.debug "*********** cache_remove( #{key} )" if debug
|
9
|
+
return if key.nil? || off
|
10
10
|
Webs.cache.delete(key.to_s)
|
11
11
|
rescue Exception => e
|
12
12
|
Rails.logger.error "------------------------------------------------\nmemcache_error: #{e.message}"
|
@@ -14,56 +14,67 @@ module Webs
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def cache_read( key )
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
Webs.cache[ key ]
|
22
|
-
end
|
17
|
+
return nil if off
|
18
|
+
data = Webs.cache.respond_to?( 'read' ) ? Webs.cache.read(key.to_s) : Webs.cache[ key.to_s ]
|
19
|
+
Rails.logger.debug "****#{data ? 'HIT*' : 'MISS'}*** cache_read( #{key} )" if debug
|
20
|
+
data
|
23
21
|
rescue Exception => e
|
24
22
|
Rails.logger.error "------------------------------------------------\nmemcache_error: #{e.message}, #{e.backtrace.join("\n")}"
|
25
23
|
nil
|
26
24
|
end
|
27
|
-
|
28
|
-
def
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
|
26
|
+
def cache_write( key, data, options={} )
|
27
|
+
s_data = Marshal.dump(data)
|
28
|
+
block_size = s_data.size
|
29
|
+
#TODO: Compression?
|
30
|
+
if block_size < 1.megabyte
|
31
|
+
Rails.logger.debug "*********** cache_write[#{block_size}]( #{key}, #{data && data.inspect.length > 100 ? data.inspect[0..100] : data} )" if debug
|
32
|
+
if Webs.cache.respond_to?( 'write' )
|
33
|
+
Webs.cache.write(key.to_s, data)
|
33
34
|
else
|
34
|
-
|
35
|
+
Webs.cache[ key.to_s ] = data
|
35
36
|
end
|
36
|
-
|
37
|
-
|
37
|
+
else
|
38
|
+
Rails.logger.debug "*********** cache_write( #{key} ) not cached since exceeds 1M @ #{block_size} )" if debug
|
38
39
|
end
|
39
|
-
|
40
|
+
rescue Exception => e
|
41
|
+
Rails.logger.error "------------------------------------------------\nmemcache_error: #{e.message}, #{e.backtrace.join("\n")}"
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_data( &block )
|
46
|
+
self.respond_to?('capture') ? capture(&block) : yield
|
47
|
+
end
|
48
|
+
|
49
|
+
def cache_block(key, options={}, &block)
|
50
|
+
return if key.nil?
|
51
|
+
Rails.logger.debug "*********** cache_block( #{key} )" if debug
|
52
|
+
return get_data( &block ) if off
|
53
|
+
|
40
54
|
unless ( data=cache_read(key) )
|
41
|
-
if self
|
42
|
-
|
43
|
-
|
44
|
-
data = yield
|
45
|
-
end
|
46
|
-
s_data = Marshal.dump(data)
|
47
|
-
block_size = s_data.size
|
48
|
-
#TODO: Check to see if dalli cache & compressed then up the size to 3MB
|
49
|
-
# should get almost 10:1 compression ratio. This will be key for caching pages & fragments
|
50
|
-
if block_size < 1.megabyte
|
51
|
-
Rails.logger.debug "*********** cache_block[#{block_size}](#{key}, #{data && data.inspect.length > 100 ? data.inspect[0..100] : data} )" if debug
|
52
|
-
if Webs.cache.respond_to?( 'write' )
|
53
|
-
Webs.cache.write(key, data)
|
54
|
-
else
|
55
|
-
Webs.cache[ key ] = data
|
56
|
-
end
|
57
|
-
else
|
58
|
-
Rails.logger.debug "*********** cache_block(#{key}) not cached since exceeds 3M @ #{block_size} )" if debug
|
59
|
-
end
|
60
|
-
else
|
61
|
-
Rails.logger.debug "****HIT**** cache_block(#{key} )" if debug && !off
|
55
|
+
# if self responds to capture this is called from a view which means we can cache snippets
|
56
|
+
data = get_data( &block )
|
57
|
+
cache_write( key.to_s, data, options )
|
62
58
|
end
|
63
59
|
data
|
64
60
|
rescue Exception => e
|
65
61
|
Rails.logger.error "------------------------------------------------\nmemcache_error: #{e.message}, #{e.backtrace.join("\n")}"
|
66
62
|
data
|
67
63
|
end
|
64
|
+
|
65
|
+
|
66
|
+
# caching snippets works very similiarly to caching a block except that snippets have already
|
67
|
+
# been read to check for existence so we don't want to do a re-read. So generally in the controller
|
68
|
+
# you will do a cache_read on the key, setting a snippet @var, not do normal processing, then in view
|
69
|
+
# do a cache_snippet which checks to see if snippet param is set if not it will cache_block the snippet
|
70
|
+
# view otherwide just render the passed snippet
|
71
|
+
def cache_snippet(snippet, key, options={}, &block)
|
72
|
+
return snippet.html_safe if !snippet.blank?
|
73
|
+
if options.delete(:ignore_cache)
|
74
|
+
get_data( &block )
|
75
|
+
else
|
76
|
+
cache_block( key, options, &block )
|
77
|
+
end
|
78
|
+
end
|
68
79
|
end
|
69
80
|
end
|
@@ -144,7 +144,10 @@ module Webs
|
|
144
144
|
|
145
145
|
# Usefull for debugging, set FW_PARAMS in development.rb and you can see the raw html in a browser
|
146
146
|
def set_fw_params
|
147
|
-
|
147
|
+
if defined?( FW_PARAMS )
|
148
|
+
params.merge!( FW_PARAMS )
|
149
|
+
Rails.logger.debug "************ set_fw_params PARAMS=#{params.inspect}"
|
150
|
+
end
|
148
151
|
end
|
149
152
|
|
150
153
|
# NOTE: bots & perl scripts are getting bad format in the request headers
|
data/lib/webs.rb
CHANGED
data/webs.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{webs}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.37"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Chuck Olczak"]
|
9
|
-
s.date = %q{2011-
|
9
|
+
s.date = %q{2011-06-01}
|
10
10
|
s.description = %q{Reusable webs stuff.}
|
11
11
|
s.email = %q{chuck@webs.com}
|
12
12
|
gemfiles = [
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: webs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.37
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Chuck Olczak
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-06-01 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|