callcache 0.1.2 → 0.2.0
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/callcache.gemspec +1 -1
- data/lib/call_cache.rb +29 -23
- data/lib/main.rb +4 -2
- data/nbproject/private/private.xml +5 -0
- metadata +1 -2
- data/callcache-0.1.2.gem +0 -0
data/callcache.gemspec
CHANGED
data/lib/call_cache.rb
CHANGED
@@ -24,17 +24,24 @@ module CallCache
|
|
24
24
|
CACHE_DIRECTORY = "/tmp/cache"
|
25
25
|
SECONDS_TO_CACHE = 60 * 60 * 3
|
26
26
|
|
27
|
-
def CallCache.call( function_call,
|
28
|
-
|
27
|
+
def CallCache.call( function_call, hashes )
|
28
|
+
parameters = hashes[:pars]
|
29
|
+
options = hashes[:options]
|
29
30
|
|
31
|
+
ttl = SECONDS_TO_CACHE
|
32
|
+
if !options.nil?
|
33
|
+
if options[:ttl]
|
34
|
+
ttl = options[:ttl]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
30
38
|
cached_call = CallCache.find( function_call, *parameters )
|
31
39
|
|
32
|
-
if cached_call == nil || Time.now.to_i - cached_call.created_at.to_i >
|
40
|
+
if cached_call == nil || Time.now.to_i - cached_call.created_at.to_i > ttl
|
33
41
|
return_val = CallCache.make_call( function_call, *parameters )
|
34
42
|
cached_call = CachedCall.new( return_val, function_call, *parameters )
|
35
43
|
|
36
44
|
CallCache.save( cached_call )
|
37
|
-
|
38
45
|
end
|
39
46
|
|
40
47
|
return cached_call.return_val
|
@@ -46,21 +53,21 @@ module CallCache
|
|
46
53
|
md5.update( Marshal.dump( parameters ) )
|
47
54
|
return md5.hexdigest
|
48
55
|
end
|
49
|
-
|
56
|
+
|
50
57
|
#def CallCache.check_or_create_tmp_dir
|
51
58
|
# file_path = CallCache::CACHE_DIRECTORY + File::SEPARATOR + "call_cache_" + id_string
|
52
59
|
#end
|
53
|
-
|
60
|
+
|
54
61
|
def CallCache.file_path_for( function_call, *parameters )
|
55
62
|
CallCache::CACHE_DIRECTORY + File::SEPARATOR +
|
56
63
|
"call_cache_" + CallCache.get_id_for( function_call, *parameters )
|
57
64
|
end
|
58
|
-
|
65
|
+
|
59
66
|
def CallCache.find( function_call, *parameters )
|
60
67
|
cached_call = nil
|
61
|
-
|
68
|
+
|
62
69
|
file_path = CallCache.file_path_for(function_call, *parameters)
|
63
|
-
|
70
|
+
|
64
71
|
if File.exist?( file_path )
|
65
72
|
# return saved cached result
|
66
73
|
cached_call = Marshal.load( File.read( file_path ) )
|
@@ -68,30 +75,29 @@ module CallCache
|
|
68
75
|
|
69
76
|
return cached_call
|
70
77
|
end
|
71
|
-
|
78
|
+
|
72
79
|
def CallCache.save( cached_call )
|
73
80
|
# write call to cache location
|
74
|
-
|
81
|
+
|
75
82
|
if !File.directory?( CallCache::CACHE_DIRECTORY )
|
76
83
|
Dir.mkdir( CallCache::CACHE_DIRECTORY )
|
77
84
|
end
|
78
|
-
|
85
|
+
|
79
86
|
file_path = CallCache.file_path_for( cached_call.function_call, *cached_call.parameters )
|
80
87
|
dest_file = File.new( file_path, 'wb' )
|
81
88
|
dest_file.write( Marshal.dump( cached_call ) )
|
82
89
|
dest_file.close
|
83
|
-
|
90
|
+
|
84
91
|
end
|
85
|
-
|
92
|
+
|
86
93
|
def CallCache.make_call( function_call, *parameters )
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
# make the call
|
93
|
-
|
94
|
-
return_val = eval( function_call_split[0..-2].join('::') ).method( function_call_split[-1] ).call( *parameters )
|
94
|
+
# call function
|
95
|
+
# parse call to handle local methods or static class methods
|
96
|
+
function_call.gsub!( '::', '.' )
|
97
|
+
function_call_split = function_call.split(/\./)
|
98
|
+
# make the call
|
95
99
|
|
96
|
-
|
100
|
+
return_val = eval( function_call_split[0..-2].join('::') ).method( function_call_split[-1] ).call( *parameters )
|
101
|
+
|
102
|
+
end
|
97
103
|
end
|
data/lib/main.rb
CHANGED
@@ -31,5 +31,7 @@ def exp_fun( start_num, end_num )
|
|
31
31
|
end
|
32
32
|
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
blog_source = CallCache.call( 'Net::HTTP.get', :pars => [URI.parse('http://feeds.feedburner.com/adamw523?format=xml')] );
|
35
|
+
|
36
|
+
p blog_source.size
|
37
|
+
p CallCache.call( 'exp_fun', :pars => [1, 10000], :options => {:ttl => 10})
|
@@ -1,4 +1,9 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
3
3
|
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
|
4
|
+
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/1">
|
5
|
+
<file>file:/Users/adam/work/callcache/callcache/callcache.gemspec</file>
|
6
|
+
<file>file:/Users/adam/work/callcache/callcache/lib/call_cache.rb</file>
|
7
|
+
<file>file:/Users/adam/work/callcache/callcache/lib/main.rb</file>
|
8
|
+
</open-files>
|
4
9
|
</project-private>
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: callcache
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
6
|
+
version: 0.2.0
|
7
7
|
date: 2007-03-03 00:00:00 -05:00
|
8
8
|
summary: Ruby library for caching results of a function call
|
9
9
|
require_paths:
|
@@ -29,7 +29,6 @@ post_install_message:
|
|
29
29
|
authors:
|
30
30
|
- Adam Wisniewski
|
31
31
|
files:
|
32
|
-
- callcache-0.1.2.gem
|
33
32
|
- callcache.gemspec
|
34
33
|
- lib
|
35
34
|
- nbproject
|
data/callcache-0.1.2.gem
DELETED
File without changes
|