cachetastic 2.1.4 → 3.0.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.
Files changed (90) hide show
  1. data/LICENSE +21 -0
  2. data/README +57 -43
  3. data/doc/classes/Cachetastic/Adapters.html +180 -0
  4. data/doc/classes/Cachetastic/Adapters/Base.html +206 -123
  5. data/doc/classes/Cachetastic/Adapters/File.html +17 -130
  6. data/doc/classes/Cachetastic/Adapters/LocalMemory.html +7 -228
  7. data/doc/classes/Cachetastic/Adapters/Memcached.html +193 -0
  8. data/doc/classes/Cachetastic/Cache.html +425 -0
  9. data/doc/classes/Cachetastic/Cacheable.html +26 -30
  10. data/doc/classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html +66 -62
  11. data/doc/classes/Cachetastic/Cacheable/ClassOnlyMethods.html +30 -30
  12. data/doc/classes/Cachetastic/Logger.html +31 -33
  13. data/doc/created.rid +1 -1
  14. data/doc/files/{lib/cachetastic/adapters/html_file_rb.html → LICENSE.html} +29 -34
  15. data/doc/files/README.html +91 -57
  16. data/doc/files/lib/cachetastic/adapters/base_rb.html +1 -39
  17. data/doc/files/lib/cachetastic/adapters/file_rb.html +1 -21
  18. data/doc/files/lib/cachetastic/adapters/local_memory_rb.html +1 -9
  19. data/doc/files/lib/cachetastic/{ruby_extensions/kernel_rb.html → adapters/memcached_rb.html} +4 -4
  20. data/doc/files/lib/cachetastic/{ruby_extensions/string_rb.html → cache_rb.html} +5 -5
  21. data/doc/files/lib/cachetastic/cacheable_rb.html +1 -1
  22. data/doc/files/lib/cachetastic/{caches/base_rb.html → extensions/string_rb.html} +5 -5
  23. data/doc/files/lib/cachetastic/logger_rb.html +1 -7
  24. data/doc/files/lib/cachetastic/{adapters/store_object_rb.html → store_object_rb.html} +3 -3
  25. data/doc/files/lib/cachetastic_rb.html +4 -95
  26. data/doc/fr_class_index.html +3 -15
  27. data/doc/fr_file_index.html +5 -16
  28. data/doc/fr_method_index.html +26 -78
  29. data/lib/cachetastic.rb +16 -70
  30. data/lib/cachetastic/adapters/base.rb +178 -76
  31. data/lib/cachetastic/adapters/file.rb +63 -46
  32. data/lib/cachetastic/adapters/local_memory.rb +36 -67
  33. data/lib/cachetastic/adapters/memcached.rb +114 -0
  34. data/lib/cachetastic/cache.rb +165 -0
  35. data/lib/cachetastic/cacheable.rb +19 -15
  36. data/lib/cachetastic/extensions/string.rb +8 -0
  37. data/lib/cachetastic/logger.rb +41 -41
  38. data/lib/cachetastic/store_object.rb +22 -0
  39. metadata +43 -64
  40. data/bin/cachetastic_drb_server +0 -115
  41. data/doc/classes/ActiveRecord/Base.html +0 -194
  42. data/doc/classes/CGI/Session/CachetasticStore.html +0 -124
  43. data/doc/classes/Cachetastic/Adapters/Drb.html +0 -332
  44. data/doc/classes/Cachetastic/Adapters/FileBase.html +0 -309
  45. data/doc/classes/Cachetastic/Adapters/HtmlFile.html +0 -224
  46. data/doc/classes/Cachetastic/Adapters/Memcache.html +0 -498
  47. data/doc/classes/Cachetastic/Caches/Base.html +0 -643
  48. data/doc/classes/Cachetastic/Caches/Base/RegisteredCaches.html +0 -179
  49. data/doc/classes/Cachetastic/Caches/MackSessionCache.html +0 -119
  50. data/doc/classes/Cachetastic/Caches/PageCache.html +0 -121
  51. data/doc/classes/Cachetastic/Caches/RailsSessionCache.html +0 -154
  52. data/doc/classes/Cachetastic/Connection.html +0 -212
  53. data/doc/classes/Cachetastic/Errors/UnsupportedAdapter.html +0 -146
  54. data/doc/classes/Object.html +0 -222
  55. data/doc/classes/String.html +0 -172
  56. data/doc/files/lib/cachetastic/adapters/drb_rb.html +0 -115
  57. data/doc/files/lib/cachetastic/adapters/file_base_rb.html +0 -109
  58. data/doc/files/lib/cachetastic/adapters/memcache_rb.html +0 -127
  59. data/doc/files/lib/cachetastic/caches/mack_session_cache_rb.html +0 -107
  60. data/doc/files/lib/cachetastic/caches/page_cache_rb.html +0 -109
  61. data/doc/files/lib/cachetastic/caches/rails_session_cache_rb.html +0 -107
  62. data/doc/files/lib/cachetastic/connection_rb.html +0 -107
  63. data/doc/files/lib/cachetastic/errors/unsupported_adapter_rb.html +0 -101
  64. data/doc/files/lib/cachetastic/rails_extensions/active_record_base_rb.html +0 -101
  65. data/doc/files/lib/cachetastic/rails_extensions/cgi_session_store_rb.html +0 -109
  66. data/doc/files/lib/cachetastic/ruby_extensions/object_rb.html +0 -101
  67. data/lib/cachetastic/adapters/drb.rb +0 -51
  68. data/lib/cachetastic/adapters/file_base.rb +0 -86
  69. data/lib/cachetastic/adapters/html_file.rb +0 -68
  70. data/lib/cachetastic/adapters/memcache.rb +0 -114
  71. data/lib/cachetastic/adapters/store_object.rb +0 -28
  72. data/lib/cachetastic/caches/base.rb +0 -238
  73. data/lib/cachetastic/caches/mack_session_cache.rb +0 -3
  74. data/lib/cachetastic/caches/page_cache.rb +0 -6
  75. data/lib/cachetastic/caches/rails_session_cache.rb +0 -12
  76. data/lib/cachetastic/connection.rb +0 -24
  77. data/lib/cachetastic/errors/unsupported_adapter.rb +0 -7
  78. data/lib/cachetastic/rails_extensions/active_record_base.rb +0 -24
  79. data/lib/cachetastic/rails_extensions/cgi_session_store.rb +0 -59
  80. data/lib/cachetastic/ruby_extensions/kernel.rb +0 -25
  81. data/lib/cachetastic/ruby_extensions/object.rb +0 -22
  82. data/lib/cachetastic/ruby_extensions/string.rb +0 -15
  83. data/test/active_record_test.rb +0 -89
  84. data/test/cacheable_test.rb +0 -88
  85. data/test/cachetastic_unit_test.rb +0 -74
  86. data/test/config.rb +0 -30
  87. data/test/drb_adapter_test.rb +0 -14
  88. data/test/file_adapter_test.rb +0 -49
  89. data/test/memcache_adapter_test.rb +0 -18
  90. data/test/test_helper.rb +0 -75
@@ -1,4 +1,4 @@
1
- module Cachetastic
1
+ module Cachetastic # :nodoc:
2
2
  # Include this module into an Object to achieve simplistic Object level caching.
3
3
  #
4
4
  # Example:
@@ -21,31 +21,37 @@ module Cachetastic
21
21
  module Cacheable
22
22
 
23
23
  module ClassAndInstanceMethods
24
- # Returns the Cachetastic::Caches::Base object associated with the object.
24
+ # Returns the Cachetastic::Cache object associated with the object.
25
25
  # If a cache hasn't been defined the one will be created on the fly.
26
26
  # The cache for the object is expected to be defined as:
27
27
  # Cachetastic::Cacheable::{CLASS_NAME_HERE}Cache
28
28
  #
29
- # Example:
29
+ # Examples:
30
30
  # class Person
31
31
  # include Cachetastic::Cacheable
32
- # attr_accessor :name
33
- # def cachetastic_key
34
- # self.name
35
- # end
36
32
  # end
37
33
  #
38
34
  # Person.cache_class # => Cachetastic::Cacheable::PersonCache
35
+ #
36
+ # class Admin::Person
37
+ # include Cachetastic::Cacheable
38
+ # end
39
+ #
40
+ # Admin::Person.cache_class # => Cachetastic::Cacheable::Admin_PersonCache
39
41
  def cache_class
40
42
  n = self.class.name
41
43
  n = self.name if n == "Class"
42
- n.gsub!('::', '_')
43
- c_name = "Cachetastic::Cacheable::#{n}Cache"
44
+ c_name = "Cachetastic::Cacheable::#{n.gsub('::', '_')}Cache"
44
45
  begin
45
46
  return c_name.constantize
46
47
  rescue NameError => e
47
48
  eval %{
48
- class #{c_name} < Cachetastic::Caches::Base
49
+ class #{c_name} < Cachetastic::Cache
50
+
51
+ def self.cache_klass
52
+ #{n}
53
+ end
54
+
49
55
  end
50
56
  }
51
57
  return c_name.constantize
@@ -62,10 +68,7 @@ module Cachetastic
62
68
  # Example:
63
69
  # class Person
64
70
  # include Cachetastic::Cacheable
65
- # attr_accessor :name
66
- # def cachetastic_key
67
- # self.name
68
- # end
71
+ #
69
72
  # def always_the_same(x,y)
70
73
  # cacher("always_the_same") do
71
74
  # x + y
@@ -83,7 +86,7 @@ module Cachetastic
83
86
  # Person.cacher("say_hi") {"Hi There"} # => "Hi There"
84
87
  # Person.get_from_cache("say_hi") # => "Hi There"
85
88
  # Cachetastic::Cacheable::PersonCache.get("say_hi") # => "Hi There"
86
- def cacher(key, expiry = 0)
89
+ def cacher(key, expiry = nil)
87
90
  cache_class.get(key) do
88
91
  if block_given?
89
92
  res = yield
@@ -114,6 +117,7 @@ module Cachetastic
114
117
  def expire_all
115
118
  cache_class.expire_all
116
119
  end
120
+
117
121
  end
118
122
 
119
123
  # --------------------------
@@ -0,0 +1,8 @@
1
+ require 'digest'
2
+ class String # :nodoc:
3
+
4
+ def hexdigest # :nodoc:
5
+ Digest::SHA1.hexdigest(self)
6
+ end
7
+
8
+ end
@@ -1,49 +1,49 @@
1
- # This class handles logging for the caches and their adapters.
2
- class Cachetastic::Logger
1
+ module Cachetastic # :nodoc:
2
+ # This class handles logging for the caches and their adapters.
3
+ # This class exists simply to supply the ability to write to
4
+ # multiple loggers simultaneously from a single call. It also
5
+ # creates a standardized message to write to those loggers.
6
+ #
7
+ # It is important that any logger type of class you decide to use
8
+ # reponds to the following methods:
9
+ # fatal(message)
10
+ # error(message)
11
+ # warn(message)
12
+ # info(message)
13
+ # debug(message)
14
+ class Logger
3
15
 
4
- # attr_accessor :options
5
- # attr_accessor :cache_name
6
- attr_accessor :loggers
16
+ # An <tt>Array</tt> of 'real' loggers to write to.
17
+ attr_accessor :loggers
7
18
 
8
- def initialize(loggers)
9
- @loggers = [loggers].flatten
10
- # self.options = options
11
- # self.cache_name = cache_name
12
- # self.options.each_pair do |n, opts|
13
- # opts["level"] = (opts["level"] ||= "info").to_sym
14
- # end
15
- end
19
+ # The <tt>initialize</tt> method takes an <tt>Array</tt>
20
+ # of your favorite logger style classes to write to.
21
+ def initialize(*loggers)
22
+ @loggers = [loggers].flatten
23
+ end
16
24
 
17
- LOG_LEVELS = [:fatal, :error, :warn, :info, :debug]
25
+ LOG_LEVELS = [:fatal, :error, :warn, :info, :debug] # :nodoc:
18
26
 
19
- LOG_LEVELS.each do |level|
20
- define_method(level) do |*args|
21
- lm = "[CACHE] [#{level.to_s.upcase}]\t#{Time.now.strftime("%m/%d/%y %H:%M:%S")}"
22
- exs = []
23
- args.each do |arg|
24
- if arg.is_a?(Exception)
25
- exs << arg
26
- continue
27
+ LOG_LEVELS.each do |level|
28
+ define_method(level) do |*args|
29
+ lm = "[CACHE] [#{level.to_s.upcase}]\t#{Time.now.strftime("%m/%d/%y %H:%M:%S")}"
30
+ exs = []
31
+ args.each do |arg|
32
+ if arg.is_a?(Exception)
33
+ exs << arg
34
+ continue
35
+ end
36
+ lm << "\t" << arg.to_s
37
+ end
38
+ exs.each do |ex|
39
+ lm << "\n#{ex.message}\n" << ex.backtrace.join("\n")
40
+ end
41
+ # puts "lm: #{lm}"
42
+ self.loggers.each do |log|
43
+ log.send(level, lm)
27
44
  end
28
- lm << "\t" << arg.to_s
29
- end
30
- exs.each do |ex|
31
- lm << "\n#{ex.message}\n" << ex.backtrace.join("\n")
32
- end
33
- self.loggers.each do |log|
34
- log.send(level, lm)
35
45
  end
36
- # self.options.each_pair do |n, opts|
37
- # if LOG_LEVELS.index(opts["level"]) >= LOG_LEVELS.index(level)
38
- # case opts["type"]
39
- # when "file"
40
- # File.open(opts["file"], "a") {|f| f.puts(lm)}
41
- # when "console"
42
- # puts lm
43
- # end
44
- # end
45
- # end
46
46
  end
47
- end
48
47
 
49
- end
48
+ end # Logger
49
+ end # Cachetastic
@@ -0,0 +1,22 @@
1
+ module Cachetastic # :nodoc:
2
+ class Cache
3
+
4
+ class StoreObject # :nodoc:
5
+ attr_accessor :expires_at
6
+ attr_accessor :key
7
+ attr_accessor :value
8
+
9
+ def initialize(key, value, expires_at)
10
+ self.key = key
11
+ self.value = value
12
+ self.expires_at = expires_at
13
+ end
14
+
15
+ def expired?
16
+ return Time.now > self.expires_at
17
+ end
18
+
19
+ end # StoreObject
20
+
21
+ end # Cache
22
+ end # Cachetastic
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cachetastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - markbates
7
+ - Mark Bates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-27 00:00:00 -05:00
12
+ date: 2009-06-11 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,85 +20,72 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 2.2.2
23
+ version: 2.3.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: memcache-client
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.7.4
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: activesupport
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 2.3.2
24
44
  version:
25
45
  description: A very simple, yet very powerful caching framework for Ruby.
26
46
  email: mark@mackframework.com
27
- executables:
28
- - cachetastic_drb_server
47
+ executables: []
48
+
29
49
  extensions: []
30
50
 
31
51
  extra_rdoc_files:
32
52
  - README
53
+ - LICENSE
33
54
  files:
34
55
  - lib/cachetastic/adapters/base.rb
35
- - lib/cachetastic/adapters/drb.rb
36
56
  - lib/cachetastic/adapters/file.rb
37
- - lib/cachetastic/adapters/file_base.rb
38
- - lib/cachetastic/adapters/html_file.rb
39
57
  - lib/cachetastic/adapters/local_memory.rb
40
- - lib/cachetastic/adapters/memcache.rb
41
- - lib/cachetastic/adapters/store_object.rb
58
+ - lib/cachetastic/adapters/memcached.rb
59
+ - lib/cachetastic/cache.rb
42
60
  - lib/cachetastic/cacheable.rb
43
- - lib/cachetastic/caches/base.rb
44
- - lib/cachetastic/caches/mack_session_cache.rb
45
- - lib/cachetastic/caches/page_cache.rb
46
- - lib/cachetastic/caches/rails_session_cache.rb
47
- - lib/cachetastic/connection.rb
48
- - lib/cachetastic/errors/unsupported_adapter.rb
61
+ - lib/cachetastic/extensions/string.rb
49
62
  - lib/cachetastic/logger.rb
50
- - lib/cachetastic/rails_extensions/active_record_base.rb
51
- - lib/cachetastic/rails_extensions/cgi_session_store.rb
52
- - lib/cachetastic/ruby_extensions/kernel.rb
53
- - lib/cachetastic/ruby_extensions/object.rb
54
- - lib/cachetastic/ruby_extensions/string.rb
63
+ - lib/cachetastic/store_object.rb
55
64
  - lib/cachetastic.rb
56
65
  - README
57
- - doc/classes/ActiveRecord/Base.html
66
+ - LICENSE
58
67
  - doc/classes/Cachetastic/Adapters/Base.html
59
- - doc/classes/Cachetastic/Adapters/Drb.html
60
68
  - doc/classes/Cachetastic/Adapters/File.html
61
- - doc/classes/Cachetastic/Adapters/FileBase.html
62
- - doc/classes/Cachetastic/Adapters/HtmlFile.html
63
69
  - doc/classes/Cachetastic/Adapters/LocalMemory.html
64
- - doc/classes/Cachetastic/Adapters/Memcache.html
70
+ - doc/classes/Cachetastic/Adapters/Memcached.html
71
+ - doc/classes/Cachetastic/Adapters.html
72
+ - doc/classes/Cachetastic/Cache.html
65
73
  - doc/classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html
66
74
  - doc/classes/Cachetastic/Cacheable/ClassOnlyMethods.html
67
75
  - doc/classes/Cachetastic/Cacheable.html
68
- - doc/classes/Cachetastic/Caches/Base/RegisteredCaches.html
69
- - doc/classes/Cachetastic/Caches/Base.html
70
- - doc/classes/Cachetastic/Caches/MackSessionCache.html
71
- - doc/classes/Cachetastic/Caches/PageCache.html
72
- - doc/classes/Cachetastic/Caches/RailsSessionCache.html
73
- - doc/classes/Cachetastic/Connection.html
74
- - doc/classes/Cachetastic/Errors/UnsupportedAdapter.html
75
76
  - doc/classes/Cachetastic/Logger.html
76
- - doc/classes/CGI/Session/CachetasticStore.html
77
- - doc/classes/Object.html
78
- - doc/classes/String.html
79
77
  - doc/created.rid
80
78
  - doc/files/lib/cachetastic/adapters/base_rb.html
81
- - doc/files/lib/cachetastic/adapters/drb_rb.html
82
- - doc/files/lib/cachetastic/adapters/file_base_rb.html
83
79
  - doc/files/lib/cachetastic/adapters/file_rb.html
84
- - doc/files/lib/cachetastic/adapters/html_file_rb.html
85
80
  - doc/files/lib/cachetastic/adapters/local_memory_rb.html
86
- - doc/files/lib/cachetastic/adapters/memcache_rb.html
87
- - doc/files/lib/cachetastic/adapters/store_object_rb.html
81
+ - doc/files/lib/cachetastic/adapters/memcached_rb.html
82
+ - doc/files/lib/cachetastic/cache_rb.html
88
83
  - doc/files/lib/cachetastic/cacheable_rb.html
89
- - doc/files/lib/cachetastic/caches/base_rb.html
90
- - doc/files/lib/cachetastic/caches/mack_session_cache_rb.html
91
- - doc/files/lib/cachetastic/caches/page_cache_rb.html
92
- - doc/files/lib/cachetastic/caches/rails_session_cache_rb.html
93
- - doc/files/lib/cachetastic/connection_rb.html
94
- - doc/files/lib/cachetastic/errors/unsupported_adapter_rb.html
84
+ - doc/files/lib/cachetastic/extensions/string_rb.html
95
85
  - doc/files/lib/cachetastic/logger_rb.html
96
- - doc/files/lib/cachetastic/rails_extensions/active_record_base_rb.html
97
- - doc/files/lib/cachetastic/rails_extensions/cgi_session_store_rb.html
98
- - doc/files/lib/cachetastic/ruby_extensions/kernel_rb.html
99
- - doc/files/lib/cachetastic/ruby_extensions/object_rb.html
100
- - doc/files/lib/cachetastic/ruby_extensions/string_rb.html
86
+ - doc/files/lib/cachetastic/store_object_rb.html
101
87
  - doc/files/lib/cachetastic_rb.html
88
+ - doc/files/LICENSE.html
102
89
  - doc/files/README.html
103
90
  - doc/fr_class_index.html
104
91
  - doc/fr_file_index.html
@@ -106,13 +93,12 @@ files:
106
93
  - doc/index.html
107
94
  - doc/rdoc-style.css
108
95
  has_rdoc: true
109
- homepage: http://www.mackframework.com
96
+ homepage: http://www.metabates.com
110
97
  post_install_message:
111
98
  rdoc_options: []
112
99
 
113
100
  require_paths:
114
101
  - lib
115
- - lib
116
102
  required_ruby_version: !ruby/object:Gem::Requirement
117
103
  requirements:
118
104
  - - ">="
@@ -132,12 +118,5 @@ rubygems_version: 1.3.1
132
118
  signing_key:
133
119
  specification_version: 2
134
120
  summary: A very simple, yet very powerful caching framework for Ruby.
135
- test_files:
136
- - test/active_record_test.rb
137
- - test/cacheable_test.rb
138
- - test/cachetastic_unit_test.rb
139
- - test/config.rb
140
- - test/drb_adapter_test.rb
141
- - test/file_adapter_test.rb
142
- - test/memcache_adapter_test.rb
143
- - test/test_helper.rb
121
+ test_files: []
122
+
@@ -1,115 +0,0 @@
1
- #!/usr/local/bin/ruby
2
- require 'thread'
3
- require 'drb'
4
- require 'singleton'
5
- require 'optparse'
6
- require 'optparse/time'
7
- require 'ostruct'
8
-
9
- # require the necessary gems:
10
- require 'rubygems'
11
- gem 'mack-facets'
12
- require 'mack-facets'
13
- gem 'configatron'
14
- require 'configatron'
15
- gem 'cachetastic'
16
- require 'cachetastic'
17
-
18
- $SAFE = 1
19
-
20
- SERVER_OPTIONS = OpenStruct.new
21
- SERVER_OPTIONS.host = "127.0.0.1"
22
- SERVER_OPTIONS.port = "61676"
23
- SERVER_OPTIONS.config_file = nil
24
- SERVER_OPTIONS.verbose = false
25
- SERVER_OPTIONS.really_verbose = false
26
-
27
- opts = OptionParser.new do |opts|
28
-
29
- opts.on("-h [HOST]") do |v|
30
- SERVER_OPTIONS.host = v
31
- end
32
-
33
- opts.on("-p [PORT]", Integer) do |v|
34
- SERVER_OPTIONS.port = v
35
- end
36
-
37
- opts.on("-c [CONFIG_FILE]") do |v|
38
- SERVER_OPTIONS.config_file = v
39
- end
40
-
41
- opts.on("-v") do |v|
42
- SERVER_OPTIONS.verbose = true
43
- end
44
-
45
- opts.on("-rv") do |v|
46
- SERVER_OPTIONS.verbose = true
47
- SERVER_OPTIONS.really_verbose = true
48
- end
49
-
50
- end
51
-
52
- opts.parse!(ARGV)
53
-
54
- if SERVER_OPTIONS.config_file
55
- configatron.configure_from_yaml(SERVER_OPTIONS.config_file)
56
- end
57
-
58
- module Cachetastic
59
- module Drb
60
- class Server
61
- include Singleton
62
-
63
- def initialize
64
- DRb.start_service("druby://#{SERVER_OPTIONS.host}:#{SERVER_OPTIONS.port}", self)
65
- puts "Cachetastic::Drb::Server listening for connection..."
66
- DRb.thread.join
67
- end # initialize
68
-
69
- def get(ns, key)
70
- puts "get: #{ns}.#{key}" if SERVER_OPTIONS.verbose
71
- puts cache_for_namespace(ns).inspect if SERVER_OPTIONS.really_verbose
72
- value = cache_for_namespace(ns).get(key)
73
- puts "\tvalue.class: #{value.class}" if SERVER_OPTIONS.verbose
74
- value
75
- end
76
-
77
- def set(ns, key, value, expiry = 0)
78
- puts "set: #{ns}.#{key}: #{value}" if SERVER_OPTIONS.verbose
79
- cache_for_namespace(ns).set(key, value)
80
- puts cache_for_namespace(ns).inspect if SERVER_OPTIONS.really_verbose
81
- value
82
- end
83
-
84
- def delete(ns, key, delay = 0)
85
- puts "delete: #{ns}.#{key}" if SERVER_OPTIONS.verbose
86
- cache_for_namespace(ns).delete(key, delay = 0)
87
- puts cache_for_namespace(ns).inspect if SERVER_OPTIONS.really_verbose
88
- end
89
-
90
- def expire_all(ns)
91
- puts "expire_all: #{ns}" if SERVER_OPTIONS.verbose
92
- instance_variable_set("@store_for_#{ns}", Cachetastic::Adapters::LocalMemory.new("store_for_#{ns}"))
93
- end
94
-
95
- def ping
96
- true
97
- end
98
-
99
- private
100
- def cache_for_namespace(ns)
101
- # puts "@store_for_#{ns}"
102
- c = instance_variable_get("@store_for_#{ns}")
103
- if c.nil?
104
- instance_variable_set("@store_for_#{ns}", Cachetastic::Adapters::LocalMemory.new("store_for_#{ns}"))
105
- c = instance_variable_get("@store_for_#{ns}")
106
- end
107
- c
108
- end
109
-
110
- end # Server
111
- end # Drb
112
- end # Cachetastic
113
-
114
- # let's start `er up!
115
- Cachetastic::Drb::Server.instance