varnish_sweeper 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -8,7 +8,8 @@ source "http://rubygems.org"
8
8
  gem "resque"
9
9
  gem "resque-loner"
10
10
  gem "curb"
11
- #
11
+ gem "activesupport", "2.3.10"
12
+
12
13
  group :development do
13
14
  gem "rspec", "~> 2.0.0"
14
15
  gem "yard", "~> 0.6.0"
data/Gemfile.lock CHANGED
@@ -1,6 +1,7 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activesupport (2.3.10)
4
5
  curb (0.7.9)
5
6
  diff-lcs (1.1.2)
6
7
  git (1.2.5)
@@ -44,6 +45,7 @@ PLATFORMS
44
45
  ruby
45
46
 
46
47
  DEPENDENCIES
48
+ activesupport (= 2.3.10)
47
49
  bundler (~> 1.0.0)
48
50
  curb
49
51
  jeweler (~> 1.5.0.pre6)
data/Rakefile CHANGED
@@ -13,12 +13,12 @@ require 'jeweler'
13
13
  Jeweler::Tasks.new do |gem|
14
14
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
15
15
  gem.name = "varnish_sweeper"
16
- gem.homepage = "http://github.com/kesselborn/varnish_sweeper"
16
+ gem.homepage = "http://github.com/moviepilot/varnish_sweeper"
17
17
  gem.license = "MIT"
18
- gem.summary = %Q{A few helper functions that help caching web pages}
19
- gem.description = %Q{hihih}
20
- gem.email = "daniel@moviepilot.com"
21
- gem.authors = ["Daniel Bornkessel"]
18
+ gem.summary = %Q{A few helper functions that help caching and sweeping web pages using varnish}
19
+ gem.description = %Q{A few helper functions that help caching and sweeping web pages using varnish}
20
+ gem.email = "developers@moviepilot.com"
21
+ gem.authors = ["Daniel Bornkessel", "Tim Bleck"]
22
22
  # Include your dependencies below. Runtime dependencies are required when using your gem,
23
23
  # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
24
24
  # gem.add_runtime_dependency 'jabber4r', '> 0.1'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.1.0
data/lib/varnish.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module Varnish
2
+
2
3
  def make_cacheable(options = {})
3
4
  if should_be_cached?(options)
4
5
  headers['Cache-Control'] = cache_control_text(options)
@@ -9,15 +10,20 @@ module Varnish
9
10
  end
10
11
  end
11
12
 
12
- def sweep_cache_for(obj)
13
+ def sweep_cache_for(obj, options = {})
13
14
  return unless obj
14
15
  if cache_data = Rails.cache.read( varnish_cache_key(obj) )
15
16
  Rails.cache.delete( varnish_cache_key(obj) )
16
- Resque.enqueue(SweeperJob, cache_data[:urls])
17
+ if options[:instant]
18
+ SweeperJob.perform(cache_data[:urls])
19
+ else
20
+ Resque.enqueue(SweeperJob, cache_data[:urls])
21
+ end
17
22
  end
18
23
  end
19
24
 
20
- protected
25
+ protected
26
+
21
27
  def cache_control_text(options)
22
28
  return unless should_be_cached?(options)
23
29
 
data/spec/spec_helper.rb CHANGED
@@ -1,21 +1,27 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'rack'
4
+ require 'ostruct'
5
+ require "active_support"
6
+ require 'varnish_sweeper'
7
+
1
8
  class ApplicationController
2
- end
9
+ include Varnish
3
10
 
4
- module ActionController
5
- module Caching
6
- class Sweeper
7
- end
11
+ def headers
12
+ @headers ||= {}
13
+ end
14
+
15
+ def request
16
+ @request ||= OpenStruct.new(:headers => {})
8
17
  end
9
- end
10
18
 
19
+ end
11
20
 
12
- require 'varnish_sweeper'
13
- require 'rspec'
21
+ class Rails
14
22
 
15
- # Requires supporting files with custom matchers and macros, etc,
16
- # in ./support/ and its subdirectories.
17
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
23
+ def self.cache
24
+ @@cache ||= ActiveSupport::Cache::MemoryStore.new
25
+ end
18
26
 
19
- RSpec.configure do |config|
20
-
21
- end
27
+ end
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Varnish do
4
+
5
+ before do
6
+ @controller = ApplicationController.new
7
+ end
8
+
9
+ describe :make_cachable do
10
+
11
+ before do
12
+ @controller.request.headers['X_VARNISH'] = 'Varnish'
13
+ end
14
+
15
+ it "should set the Cache-Control header to private if the option private is set" do
16
+ @controller.make_cacheable(:private => true, :s_max_age => 3600)
17
+ @controller.headers["Cache-Control"].should == 'private, s-maxage=3600'
18
+ end
19
+
20
+ it "should set the Cache-Control header to public including the given s_max_age" do
21
+ @controller.make_cacheable(:s_max_age => 3600)
22
+ @controller.headers["Cache-Control"].should == 'public, s-maxage=3600'
23
+ end
24
+
25
+ it "should set the Cache-Control header to public including the given max_age" do
26
+ @controller.make_cacheable(:max_age => 3600)
27
+ @controller.headers["Cache-Control"].should == 'public, max-age=3600'
28
+ end
29
+
30
+ end
31
+
32
+ describe :sweep_cache_for do
33
+
34
+ before do
35
+ @obj = mock('Model')
36
+ @controller.stub!(:varnish_cache_key).with(@obj).and_return("cache_key")
37
+ Rails.cache.write("cache_key", :urls => ["cached_url"])
38
+ end
39
+
40
+ context 'asynchronous sweeping (default)' do
41
+
42
+ it "should enqueue the sweeping job with resque" do
43
+ Resque.should_receive(:enqueue).with(SweeperJob, ["cached_url"])
44
+ @controller.sweep_cache_for(@obj)
45
+ end
46
+
47
+ end
48
+
49
+ context 'instant sweeping (with option :instant => true)' do
50
+
51
+ it "should sweep the cache instantly" do
52
+ SweeperJob.should_receive(:perform).with(["cached_url"])
53
+ @controller.sweep_cache_for(@obj, :instant => true)
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  describe "VarnishSweeper" do
4
4
  # it "should provide our functions to the ApplicationController" do
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{varnish_sweeper}
8
- s.version = "0.0.6"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Daniel Bornkessel"]
12
- s.date = %q{2011-01-13}
13
- s.description = %q{hihih}
14
- s.email = %q{daniel@moviepilot.com}
11
+ s.authors = ["Daniel Bornkessel", "Tim Bleck"]
12
+ s.date = %q{2011-03-31}
13
+ s.description = %q{A few helper functions that help caching and sweeping web pages using varnish}
14
+ s.email = %q{developers@moviepilot.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -29,27 +29,29 @@ Gem::Specification.new do |s|
29
29
  "lib/varnish.rb",
30
30
  "lib/varnish_sweeper.rb",
31
31
  "spec/spec_helper.rb",
32
- "spec/varnish_sweeper_spec.rb",
32
+ "spec/varnish_sweeper/varnish_spec.rb",
33
+ "spec/varnish_sweeper/varnish_sweeper_spec.rb",
33
34
  "varnish_sweeper.gemspec"
34
35
  ]
35
- s.homepage = %q{http://github.com/kesselborn/varnish_sweeper}
36
+ s.homepage = %q{http://github.com/moviepilot/varnish_sweeper}
36
37
  s.licenses = ["MIT"]
37
38
  s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
39
- s.summary = %q{A few helper functions that help caching web pages}
39
+ s.rubygems_version = %q{1.5.2}
40
+ s.summary = %q{A few helper functions that help caching and sweeping web pages using varnish}
40
41
  s.test_files = [
41
42
  "spec/spec_helper.rb",
42
- "spec/varnish_sweeper_spec.rb"
43
+ "spec/varnish_sweeper/varnish_spec.rb",
44
+ "spec/varnish_sweeper/varnish_sweeper_spec.rb"
43
45
  ]
44
46
 
45
47
  if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
48
  s.specification_version = 3
48
49
 
49
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
51
  s.add_runtime_dependency(%q<resque>, [">= 0"])
51
52
  s.add_runtime_dependency(%q<resque-loner>, [">= 0"])
52
53
  s.add_runtime_dependency(%q<curb>, [">= 0"])
54
+ s.add_runtime_dependency(%q<activesupport>, ["= 2.3.10"])
53
55
  s.add_development_dependency(%q<rspec>, ["~> 2.0.0"])
54
56
  s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
55
57
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -59,6 +61,7 @@ Gem::Specification.new do |s|
59
61
  s.add_dependency(%q<resque>, [">= 0"])
60
62
  s.add_dependency(%q<resque-loner>, [">= 0"])
61
63
  s.add_dependency(%q<curb>, [">= 0"])
64
+ s.add_dependency(%q<activesupport>, ["= 2.3.10"])
62
65
  s.add_dependency(%q<rspec>, ["~> 2.0.0"])
63
66
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
64
67
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -69,6 +72,7 @@ Gem::Specification.new do |s|
69
72
  s.add_dependency(%q<resque>, [">= 0"])
70
73
  s.add_dependency(%q<resque-loner>, [">= 0"])
71
74
  s.add_dependency(%q<curb>, [">= 0"])
75
+ s.add_dependency(%q<activesupport>, ["= 2.3.10"])
72
76
  s.add_dependency(%q<rspec>, ["~> 2.0.0"])
73
77
  s.add_dependency(%q<yard>, ["~> 0.6.0"])
74
78
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
metadata CHANGED
@@ -1,137 +1,164 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: varnish_sweeper
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 27
5
+ prerelease:
5
6
  segments:
6
7
  - 0
8
+ - 1
7
9
  - 0
8
- - 6
9
- version: 0.0.6
10
+ version: 0.1.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Daniel Bornkessel
14
+ - Tim Bleck
13
15
  autorequire:
14
16
  bindir: bin
15
17
  cert_chain: []
16
18
 
17
- date: 2011-01-13 00:00:00 +01:00
19
+ date: 2011-03-31 00:00:00 +02:00
18
20
  default_executable:
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: resque
22
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
25
  none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
30
- type: :runtime
31
33
  prerelease: false
32
- version_requirements: *id001
34
+ type: :runtime
35
+ requirement: *id001
33
36
  - !ruby/object:Gem::Dependency
34
37
  name: resque-loner
35
- requirement: &id002 !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
39
  none: false
37
40
  requirements:
38
41
  - - ">="
39
42
  - !ruby/object:Gem::Version
43
+ hash: 3
40
44
  segments:
41
45
  - 0
42
46
  version: "0"
43
- type: :runtime
44
47
  prerelease: false
45
- version_requirements: *id002
48
+ type: :runtime
49
+ requirement: *id002
46
50
  - !ruby/object:Gem::Dependency
47
51
  name: curb
48
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
49
53
  none: false
50
54
  requirements:
51
55
  - - ">="
52
56
  - !ruby/object:Gem::Version
57
+ hash: 3
53
58
  segments:
54
59
  - 0
55
60
  version: "0"
61
+ prerelease: false
56
62
  type: :runtime
63
+ requirement: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: activesupport
66
+ version_requirements: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - "="
70
+ - !ruby/object:Gem::Version
71
+ hash: 23
72
+ segments:
73
+ - 2
74
+ - 3
75
+ - 10
76
+ version: 2.3.10
57
77
  prerelease: false
58
- version_requirements: *id003
78
+ type: :runtime
79
+ requirement: *id004
59
80
  - !ruby/object:Gem::Dependency
60
81
  name: rspec
61
- requirement: &id004 !ruby/object:Gem::Requirement
82
+ version_requirements: &id005 !ruby/object:Gem::Requirement
62
83
  none: false
63
84
  requirements:
64
85
  - - ~>
65
86
  - !ruby/object:Gem::Version
87
+ hash: 15
66
88
  segments:
67
89
  - 2
68
90
  - 0
69
91
  - 0
70
92
  version: 2.0.0
71
- type: :development
72
93
  prerelease: false
73
- version_requirements: *id004
94
+ type: :development
95
+ requirement: *id005
74
96
  - !ruby/object:Gem::Dependency
75
97
  name: yard
76
- requirement: &id005 !ruby/object:Gem::Requirement
98
+ version_requirements: &id006 !ruby/object:Gem::Requirement
77
99
  none: false
78
100
  requirements:
79
101
  - - ~>
80
102
  - !ruby/object:Gem::Version
103
+ hash: 7
81
104
  segments:
82
105
  - 0
83
106
  - 6
84
107
  - 0
85
108
  version: 0.6.0
86
- type: :development
87
109
  prerelease: false
88
- version_requirements: *id005
110
+ type: :development
111
+ requirement: *id006
89
112
  - !ruby/object:Gem::Dependency
90
113
  name: bundler
91
- requirement: &id006 !ruby/object:Gem::Requirement
114
+ version_requirements: &id007 !ruby/object:Gem::Requirement
92
115
  none: false
93
116
  requirements:
94
117
  - - ~>
95
118
  - !ruby/object:Gem::Version
119
+ hash: 23
96
120
  segments:
97
121
  - 1
98
122
  - 0
99
123
  - 0
100
124
  version: 1.0.0
101
- type: :development
102
125
  prerelease: false
103
- version_requirements: *id006
126
+ type: :development
127
+ requirement: *id007
104
128
  - !ruby/object:Gem::Dependency
105
129
  name: jeweler
106
- requirement: &id007 !ruby/object:Gem::Requirement
130
+ version_requirements: &id008 !ruby/object:Gem::Requirement
107
131
  none: false
108
132
  requirements:
109
133
  - - ~>
110
134
  - !ruby/object:Gem::Version
135
+ hash: 1923832021
111
136
  segments:
112
137
  - 1
113
138
  - 5
114
139
  - 0
115
- - pre6
140
+ - pre
141
+ - 6
116
142
  version: 1.5.0.pre6
117
- type: :development
118
143
  prerelease: false
119
- version_requirements: *id007
144
+ type: :development
145
+ requirement: *id008
120
146
  - !ruby/object:Gem::Dependency
121
147
  name: rcov
122
- requirement: &id008 !ruby/object:Gem::Requirement
148
+ version_requirements: &id009 !ruby/object:Gem::Requirement
123
149
  none: false
124
150
  requirements:
125
151
  - - ">="
126
152
  - !ruby/object:Gem::Version
153
+ hash: 3
127
154
  segments:
128
155
  - 0
129
156
  version: "0"
130
- type: :development
131
157
  prerelease: false
132
- version_requirements: *id008
133
- description: hihih
134
- email: daniel@moviepilot.com
158
+ type: :development
159
+ requirement: *id009
160
+ description: A few helper functions that help caching and sweeping web pages using varnish
161
+ email: developers@moviepilot.com
135
162
  executables: []
136
163
 
137
164
  extensions: []
@@ -152,10 +179,11 @@ files:
152
179
  - lib/varnish.rb
153
180
  - lib/varnish_sweeper.rb
154
181
  - spec/spec_helper.rb
155
- - spec/varnish_sweeper_spec.rb
182
+ - spec/varnish_sweeper/varnish_spec.rb
183
+ - spec/varnish_sweeper/varnish_sweeper_spec.rb
156
184
  - varnish_sweeper.gemspec
157
185
  has_rdoc: true
158
- homepage: http://github.com/kesselborn/varnish_sweeper
186
+ homepage: http://github.com/moviepilot/varnish_sweeper
159
187
  licenses:
160
188
  - MIT
161
189
  post_install_message:
@@ -168,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
196
  requirements:
169
197
  - - ">="
170
198
  - !ruby/object:Gem::Version
171
- hash: -1721035453808399085
199
+ hash: 3
172
200
  segments:
173
201
  - 0
174
202
  version: "0"
@@ -177,16 +205,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
205
  requirements:
178
206
  - - ">="
179
207
  - !ruby/object:Gem::Version
208
+ hash: 3
180
209
  segments:
181
210
  - 0
182
211
  version: "0"
183
212
  requirements: []
184
213
 
185
214
  rubyforge_project:
186
- rubygems_version: 1.3.7
215
+ rubygems_version: 1.5.2
187
216
  signing_key:
188
217
  specification_version: 3
189
- summary: A few helper functions that help caching web pages
218
+ summary: A few helper functions that help caching and sweeping web pages using varnish
190
219
  test_files:
191
220
  - spec/spec_helper.rb
192
- - spec/varnish_sweeper_spec.rb
221
+ - spec/varnish_sweeper/varnish_spec.rb
222
+ - spec/varnish_sweeper/varnish_sweeper_spec.rb