mongrel_page_cache_handler 1.6.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/init.rb ADDED
@@ -0,0 +1 @@
1
+ #require 'mongrel_page_cache_handler'
@@ -0,0 +1,21 @@
1
+ module Mongrel
2
+ module PageCacheHandler
3
+
4
+ class CacheServer < Mongrel::HttpHandler
5
+
6
+ def process(request, response)
7
+ Mongrel::PageCacheHandler::Utils.do_work(request, response) do
8
+ file_path = Mongrel::PageCacheHandler::Utils.build_full_file_path(request)
9
+ if File.exists?(file_path)
10
+ puts "We found: #{file_path}, let's render it"
11
+ response.start(200, true) do |head, out|
12
+ out.write(File.open(file_path).read)
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end #PageCacheHandler
21
+ end #Mongrel
data/lib/cacher.rb ADDED
@@ -0,0 +1,25 @@
1
+ module Mongrel
2
+ module PageCacheHandler
3
+
4
+ class Cacher < Mongrel::HttpHandler
5
+
6
+ def process(request, response)
7
+ Mongrel::PageCacheHandler::Utils.do_work(request, response) do
8
+ if response.status == 200
9
+ sent = response.header.instance_variable_get("@sent")
10
+ mcm = sent["mongrel_cache_me"]
11
+ if mcm
12
+ file_path = Mongrel::PageCacheHandler::Utils.build_full_file_path(request, true)
13
+ puts "Let's cache this page: #{file_path}"
14
+ File.open(file_path, "w") do |f|
15
+ f.puts response.body.string
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ end #Cacher
23
+
24
+ end #PageCacheHandler
25
+ end #Mongrel
@@ -0,0 +1,17 @@
1
+ class ActionController::Base
2
+
3
+ def self.m_cache_page(*args)
4
+ before_filter :set_mongrel_page_cache_header, *args
5
+ end
6
+
7
+ protected
8
+ def set_mongrel_page_cache_header
9
+ if request.get?
10
+ # puts "Setting mongrel page cache header for: #{params[:controller]}/#{params[:action]}"
11
+ response.headers['mongrel_cache_me'] = true
12
+ else
13
+ # puts "Won't set mongrel page cache header because the request was not a GET."
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,8 @@
1
+ require 'gem_plugin'
2
+ require 'mongrel'
3
+ require 'pp'
4
+ require 'fileutils'
5
+ require 'utils'
6
+ require 'cacher'
7
+ require 'cache_server'
8
+ require 'm_action_controller_base'
@@ -0,0 +1,5 @@
1
+ --- !ruby/object:RubyForgeConfig
2
+ gem_name: mongrel_page_cache_handler
3
+ package: mongrel_page_cache_handler
4
+ project: magrathea
5
+ version: 1.6.0
data/lib/utils.rb ADDED
@@ -0,0 +1,66 @@
1
+ module Mongrel
2
+ module PageCacheHandler
3
+
4
+ class Utils
5
+
6
+ class << self
7
+
8
+ def do_work(request, response)
9
+ if ActionController::Base.perform_caching
10
+ if request.params[Mongrel::Const::REQUEST_METHOD] == "GET"
11
+ case request.params[Mongrel::Const::PATH_INFO]
12
+ when /\.[a-zA-Z]*$/
13
+ else
14
+ yield request, request if block_given?
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ def build_full_file_path(request, mk_dirs = false)
21
+ File.join(build_directory_path(request, mk_dirs), build_file_name(request))
22
+ end
23
+
24
+ def build_directory_path(request, mk_dirs = false)
25
+ path = request.params[Mongrel::Const::PATH_INFO]# + ActionController::Base.page_cache_extension
26
+ if path == "/"
27
+ path = "/index"
28
+ end
29
+ pcd = ActionController::Base.page_cache_directory
30
+ dir_path = File.join(pcd, path)
31
+ FileUtils.mkdir_p(dir_path) if mk_dirs
32
+ dir_path
33
+ end
34
+
35
+ def build_file_name(request)
36
+ path = request.params[Mongrel::Const::PATH_INFO]
37
+ path = "/index" if path == "/"
38
+ url = path
39
+ query_string = request.params["QUERY_STRING"]
40
+ query_params = {:page => "1"}
41
+ unless query_string.blank?
42
+ query_string.split("&").sort.each do |pair|
43
+ pair_values = pair.split("=")
44
+ query_params[pair_values.first.to_sym] = URI.unescape(pair_values.last)
45
+ end
46
+ end
47
+ query_params.delete(:gclid)
48
+ f_name = ""
49
+ query_params.each_pair do |key, value|
50
+ f_name << key.to_s
51
+ f_name << "_"
52
+ f_name << value
53
+ f_name << "-"
54
+ end
55
+ f_name.gsub!(" ", "_")
56
+ f_name.downcase!
57
+ f_name.chop!
58
+ f_name
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+ end #PageCacheHandler
66
+ end #Mongrel
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: mongrel_page_cache_handler
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.6.0
7
+ date: 2007-10-26 00:00:00 -04:00
8
+ summary: mongrel_page_cache_handler
9
+ require_paths:
10
+ - lib
11
+ - lib
12
+ - lib
13
+ - lib/tasks
14
+ email:
15
+ homepage:
16
+ rubyforge_project: magrathea
17
+ description: "mongrel_page_cache_handler was developed by: markbates"
18
+ autorequire:
19
+ - utils
20
+ - mongrel_page_cache_handler
21
+ - m_action_controller_base
22
+ - cacher
23
+ - cache_server
24
+ default_executable:
25
+ bindir: bin
26
+ has_rdoc: false
27
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
28
+ requirements:
29
+ - - ">"
30
+ - !ruby/object:Gem::Version
31
+ version: 0.0.0
32
+ version:
33
+ platform: ruby
34
+ signing_key:
35
+ cert_chain:
36
+ post_install_message:
37
+ authors:
38
+ - markbates
39
+ files:
40
+ - init.rb
41
+ - lib/cache_server.rb
42
+ - lib/cacher.rb
43
+ - lib/m_action_controller_base.rb
44
+ - lib/mongrel_page_cache_handler.rb
45
+ - lib/tasks/rubyforge_config.yml
46
+ - lib/utils.rb
47
+ test_files: []
48
+
49
+ rdoc_options: []
50
+
51
+ extra_rdoc_files: []
52
+
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ requirements: []
58
+
59
+ dependencies: []
60
+