ventilation 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1 +1,11 @@
1
- * Fixes issue with urls without paths.
1
+ Version 0.3.0 - 12/4/2010
2
+ -------------------------
3
+ * Optimize code for production esi.
4
+ * Add expire helper for setting cache control headers.
5
+ * Always use varnish if its available.
6
+ * Turn off esi resolution for environment except for development.
7
+
8
+ Version 0.2.3 - 12/3/2010
9
+ -------------------------
10
+ * Turn off esi resolution for staging by default.
11
+ * Fixes issue with urls without paths.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.3
1
+ 0.3.0
@@ -6,17 +6,28 @@ require 'ventilation/deep_stack'
6
6
  module Ventilation
7
7
  module EsiHelper
8
8
 
9
- # Render resource on the edge
10
9
  def esi(resource, options = {})
11
- env = ENV['RAILS_ENV']
12
-
13
- # If we were passed a url...
14
10
  if resource =~ URI.regexp
15
- # ...fetch and render an external resource...
16
- case env
17
- when 'production', 'staging'
18
- %%<esi:include src="#{resource}" />%
19
- else
11
+ %%<esi:include src="#{resource}" />%
12
+ else
13
+ %%<esi:include src="#{url_for options.merge(:action => resource)}" />%
14
+ end
15
+ end
16
+
17
+ # Only enable ventilation esi resolutioon features in development.
18
+ if 'development' == ENV['RAILS_ENV']
19
+
20
+ alias :esi_tag :esi
21
+
22
+ # Render resource on the edge
23
+ def esi(resource, options = {})
24
+
25
+ # Use esi if supported.
26
+ return esi_tag(resource, options) if esi_supported?
27
+
28
+ # If we were passed a url...
29
+ if resource =~ URI.regexp
30
+ # ...fetch and render an external resource...
20
31
  url = URI.parse(resource)
21
32
  res = Net::HTTP.start(url.host, url.port) {|http|
22
33
  path = url.path.blank? ? "/" : url.path
@@ -24,13 +35,8 @@ module Ventilation
24
35
  http.get(path)
25
36
  }
26
37
  res.body
27
- end
28
- else
29
- # ...otherwise render as an action.
30
- case env
31
- when 'production', 'staging'
32
- %%<esi:include src="#{url_for url_options.merge(:action => resource)}" />%
33
38
  else
39
+ # ...otherwise render as an action.
34
40
  if controller = options[:controller]
35
41
  controller = "#{controller.to_s.camelcase}Controller".constantize
36
42
  else
@@ -51,10 +57,21 @@ module Ventilation
51
57
  end
52
58
  end
53
59
 
54
- end
55
- end
60
+ # Helper for setting expire headers.
61
+ #
62
+ # Examples:
63
+ # <%- expire 5.minutes -%>
64
+ # <%- expire 30.seconds -%>
65
+ def expire(duration)
66
+ headers['Cache-Control'] = 'max-age=#{duration.to_i}'
67
+ headers['Expires'] = duration.from_now.httpdate
68
+ end
69
+
70
+ private
71
+ def esi_supported?
72
+ # Enable esi if behind varnish.
73
+ request.env.has_key?('HTTP_X_VARNISH')
74
+ end
56
75
 
57
- # Include EsiHelper in the Application
58
- module ApplicationHelper
59
- include Ventilation::EsiHelper
76
+ end
60
77
  end
data/lib/ventilation.rb CHANGED
@@ -1 +1,8 @@
1
1
  require 'app/helpers/esi_helper'
2
+
3
+ # Include EsiHelper in the Application
4
+ module ApplicationHelper
5
+ include Ventilation::EsiHelper
6
+ end
7
+
8
+
data/ventilation.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ventilation}
8
- s.version = "0.2.3"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Blake Taylor"]
12
- s.date = %q{2010-12-03}
12
+ s.date = %q{2010-12-04}
13
13
  s.description = %q{Helper methods for building esi tags, simplifies development bypassing the need for varnish.}
14
14
  s.email = %q{btaylor@agoragames.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ventilation
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 2
8
8
  - 3
9
- version: 0.2.3
9
+ - 0
10
+ version: 0.3.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Blake Taylor
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-12-03 00:00:00 -05:00
18
+ date: 2010-12-04 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -25,6 +26,7 @@ dependencies:
25
26
  requirements:
26
27
  - - ">="
27
28
  - !ruby/object:Gem::Version
29
+ hash: 3
28
30
  segments:
29
31
  - 0
30
32
  version: "0"
@@ -38,6 +40,7 @@ dependencies:
38
40
  requirements:
39
41
  - - ">="
40
42
  - !ruby/object:Gem::Version
43
+ hash: 15
41
44
  segments:
42
45
  - 1
43
46
  - 2
@@ -53,6 +56,7 @@ dependencies:
53
56
  requirements:
54
57
  - - ">="
55
58
  - !ruby/object:Gem::Version
59
+ hash: 43
56
60
  segments:
57
61
  - 0
58
62
  - 9
@@ -102,6 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
106
  requirements:
103
107
  - - ">="
104
108
  - !ruby/object:Gem::Version
109
+ hash: 3
105
110
  segments:
106
111
  - 0
107
112
  version: "0"
@@ -110,6 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
115
  requirements:
111
116
  - - ">="
112
117
  - !ruby/object:Gem::Version
118
+ hash: 3
113
119
  segments:
114
120
  - 0
115
121
  version: "0"