cryx-cacheability 1.1.0 → 1.2.1
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/README +15 -13
- data/Rakefile +33 -0
- data/VERSION.yml +2 -2
- data/cacheability.gemspec +2 -1
- data/lib/cacheability/restclient.rb +15 -2
- data/spec/cacheability_spec.rb +2 -1
- metadata +2 -2
data/README
CHANGED
@@ -1,16 +1,19 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
= cacheability
|
2
|
+
|
3
3
|
A gem that makes client-side caching of HTTP requests a no-brainer. It is built upon the Rack:Cache gem from Ryan Tomayko.
|
4
4
|
|
5
5
|
Cached data can be stored in heap, file or memcached. See the Rack::Cache documentation (http://tomayko.com/src/rack-cache/) for more information.
|
6
6
|
|
7
|
-
Installation
|
8
|
-
|
9
|
-
gem install
|
7
|
+
= Installation
|
8
|
+
|
9
|
+
gem install cacheability
|
10
10
|
|
11
|
-
Usage
|
12
|
-
|
11
|
+
= Usage
|
12
|
+
|
13
13
|
require 'cacheability/restclient'
|
14
|
+
|
15
|
+
RestClient.log = 'stdout' # displays requests and status codes
|
16
|
+
|
14
17
|
resource = RestClient::CacheableResource.new( 'http://some/cacheable/resource',
|
15
18
|
:cache => { :metastore => 'file:/tmp/cache/meta',
|
16
19
|
:entitystore => 'file:/tmp/cache/body' }
|
@@ -27,15 +30,14 @@ Do yourself a favor and read:
|
|
27
30
|
* Things Caches Do - http://tomayko.com/writings/things-caches-do
|
28
31
|
|
29
32
|
|
30
|
-
Supported libraries
|
31
|
-
|
33
|
+
= Supported libraries
|
34
|
+
|
32
35
|
* rest-client > 0.9
|
33
36
|
|
34
|
-
Dependencies
|
35
|
-
|
37
|
+
= Dependencies
|
38
|
+
|
36
39
|
* rack-cache
|
37
40
|
|
38
|
-
COPYRIGHT
|
39
|
-
=========
|
41
|
+
= COPYRIGHT
|
40
42
|
|
41
43
|
Copyright (c) 2008 Cyril Rohr. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -10,11 +10,43 @@ begin
|
|
10
10
|
s.description = "Transparent caching for your HTTP requests (heap, file, memcache). Built-in support for RestClient. Built upon Rack::Cache."
|
11
11
|
s.authors = ["Cyril Rohr"]
|
12
12
|
s.add_dependency "rack-cache"
|
13
|
+
s.rubyforge_project = 'cacheability'
|
14
|
+
end
|
15
|
+
|
16
|
+
Jeweler::RubyforgeTasks.new do |rubyforge|
|
17
|
+
rubyforge.doc_task = "rdoc"
|
13
18
|
end
|
14
19
|
rescue LoadError
|
15
20
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
16
21
|
end
|
17
22
|
|
23
|
+
|
24
|
+
begin
|
25
|
+
require 'rake/contrib/sshpublisher'
|
26
|
+
namespace :rubyforge do
|
27
|
+
|
28
|
+
desc "Release gem and RDoc documentation to RubyForge"
|
29
|
+
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
30
|
+
|
31
|
+
namespace :release do
|
32
|
+
desc "Publish RDoc to RubyForge."
|
33
|
+
task :docs => [:rdoc] do
|
34
|
+
config = YAML.load(
|
35
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
36
|
+
)
|
37
|
+
|
38
|
+
host = "#{config['username']}@rubyforge.org"
|
39
|
+
remote_dir = "/var/www/gforge-projects/cacheability/"
|
40
|
+
local_dir = 'rdoc'
|
41
|
+
|
42
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
rescue LoadError
|
47
|
+
puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
|
48
|
+
end
|
49
|
+
|
18
50
|
require 'rake/rdoctask'
|
19
51
|
Rake::RDocTask.new do |rdoc|
|
20
52
|
rdoc.rdoc_dir = 'rdoc'
|
@@ -43,4 +75,5 @@ rescue LoadError
|
|
43
75
|
puts "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
|
44
76
|
end
|
45
77
|
|
78
|
+
|
46
79
|
task :default => :spec
|
data/VERSION.yml
CHANGED
data/cacheability.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cacheability}
|
8
|
-
s.version = "1.1
|
8
|
+
s.version = "1.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Cyril Rohr"]
|
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.homepage = %q{http://github.com/cryx/cacheability}
|
33
33
|
s.rdoc_options = ["--charset=UTF-8"]
|
34
34
|
s.require_paths = ["lib"]
|
35
|
+
s.rubyforge_project = %q{cacheability}
|
35
36
|
s.rubygems_version = %q{1.3.2}
|
36
37
|
s.summary = %q{A gem that makes client-side caching of HTTP requests a no-brainer. Replace your calls to RestClient::Resource.new with RestClient::CacheableResource.new and the caching is taken care of for you ! Supports heap, file and memcache storage.}
|
37
38
|
s.test_files = [
|
@@ -24,7 +24,7 @@ module RestClient
|
|
24
24
|
|
25
25
|
class CacheableResource < Resource
|
26
26
|
attr_reader :cache
|
27
|
-
CACHE_DEFAULT_OPTIONS = {:verbose =>
|
27
|
+
CACHE_DEFAULT_OPTIONS = {:verbose => false}
|
28
28
|
|
29
29
|
def initialize(*args)
|
30
30
|
super(*args)
|
@@ -52,12 +52,13 @@ module RestClient
|
|
52
52
|
"rack.multiprocess" => true,
|
53
53
|
"rack.url_scheme" => uri.scheme,
|
54
54
|
"rack.input" => StringIO.new,
|
55
|
-
"rack.errors" =>
|
55
|
+
"rack.errors" => logger # Rack-Cache writes errors into this field
|
56
56
|
}
|
57
57
|
debeautify_headers(additional_headers).each do |key, value|
|
58
58
|
env.merge!("HTTP_"+key.to_s.gsub("-", "_").upcase => value)
|
59
59
|
end
|
60
60
|
response = MockHTTPResponse.new(cache.call(env))
|
61
|
+
env['rack.errors'].close if env['rack.errors'].respond_to?(:close)
|
61
62
|
RestClient::Response.new(response.body, response)
|
62
63
|
else
|
63
64
|
super(additional_headers)
|
@@ -88,5 +89,17 @@ module RestClient
|
|
88
89
|
response = RestClient::Response.new("", e.response)
|
89
90
|
[304, debeautify_headers( response.headers ), [response.to_s]]
|
90
91
|
end
|
92
|
+
|
93
|
+
# Ugly, but waiting for RestClient to become smarter
|
94
|
+
#
|
95
|
+
def logger
|
96
|
+
return StringIO.new unless log_to = RestClient.log
|
97
|
+
case log_to
|
98
|
+
when 'stdout' then STDOUT
|
99
|
+
when 'stderr' then STDERR
|
100
|
+
else
|
101
|
+
File.new(log_to, 'a')
|
102
|
+
end
|
103
|
+
end
|
91
104
|
end
|
92
105
|
end
|
data/spec/cacheability_spec.rb
CHANGED
@@ -7,6 +7,7 @@ describe RestClient::CacheableResource do
|
|
7
7
|
require File.dirname(__FILE__) + '/../lib/cacheability/restclient'
|
8
8
|
before do
|
9
9
|
@cache_options = {:metastore => 'file:/tmp/cache/meta', :entitystore => 'file:/tmp/cache/body'}
|
10
|
+
RestClient.log = nil
|
10
11
|
end
|
11
12
|
|
12
13
|
it "should instantiate the cache at init" do
|
@@ -60,7 +61,7 @@ describe RestClient::CacheableResource do
|
|
60
61
|
it "should render a RestClient::Response even when the data is coming from the cache" do
|
61
62
|
@resource.cache.should_receive(:call).and_return([200, {'ADDITIONAL_HEADER' => 'whatever'}, "body"])
|
62
63
|
response = @resource.get({'HTTP_ADDITIONAL_HEADER' => 'whatever'}, true)
|
63
|
-
response.should
|
64
|
+
response.should be_a(RestClient::Response)
|
64
65
|
response.code.should == 200
|
65
66
|
response.headers.should == {:ADDITIONAL_HEADER => 'whatever'}
|
66
67
|
response.to_s.should == "body"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cryx-cacheability
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril Rohr
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version:
|
65
65
|
requirements: []
|
66
66
|
|
67
|
-
rubyforge_project:
|
67
|
+
rubyforge_project: cacheability
|
68
68
|
rubygems_version: 1.3.5
|
69
69
|
signing_key:
|
70
70
|
specification_version: 3
|