varnish_sweeper 0.0.6 → 0.1.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/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