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
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri Feb 27 10:55:34 -0500 2009</td>
59
+ <td>Thu Jun 11 12:07:40 -0400 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -68,106 +68,15 @@
68
68
 
69
69
  <div id="contextContent">
70
70
 
71
- <div id="description">
72
- <h1>Configuration:</h1>
73
- <pre>
74
- # this will dump into the log, configuration info for each cache, as well as the .inspect
75
- # for each object returned from the cache
76
- configatron.cachetastic_default_options.debug = false
77
-
78
- # this is the type of file store to be used for this cache.
79
- # more adapters can be developed and plugged in as desired
80
- configatron.cachetastic_default_options.adapter = :local_memory # local_memory | memcache | file | drb | html_file (default: local_memory)
81
-
82
- # this will marshall objects into and out of the store.
83
- configatron.cachetastic_default_options.marshall_method = :none # none | yaml | ruby (default: none)
84
-
85
- # this sets how long objects will live in the cache before they are auto expired.
86
- configatron.cachetastic_default_options.default_expiry = 86400 # time in seconds (default: 24 hours)
87
-
88
- # when setting objects into the cache the expiry_swing is +/- to the expiry time.
89
- # example: if the expiry time is 1 hour, and the swing is 15 minutes,
90
- # objects will go into the cache with an expiry time sometime between 45 mins and 75 mins.
91
- configatron.cachetastic_default_options.expiry_swing = 60 * 15 # time in seconds (default: 0)
92
-
93
- # these options get passed on directly to the store.
94
- # listed below are options for memcache:
95
- configatron.cachetastic_default_options.store_options.c_threshold = &quot;10_000&quot;
96
- configatron.cachetastic_default_options.store_options.compression = true
97
- configatron.cachetastic_default_options.store_options.debug = false
98
- configatron.cachetastic_default_options.store_options.readonly = false
99
- configatron.cachetastic_default_options.store_options.urlencode = false
100
-
101
- # set the servers to be used for memcache
102
- configatron.cachetastic_default_options.servers = [&quot;127.0.0.1:11211&quot;] # ip:port used for memcache
103
-
104
- # listed below are the options for file:
105
- configatron.cachetastic_default_options.store_options.dir = &quot;/cachetastic/caches&quot;
106
-
107
- # listed below are the options for drb:
108
- configatron.cachetastic_default_options.servers = [&quot;druby://127.0.0.1:61676&quot;]
109
-
110
- # configure logging for this cache
111
- # n number of logs can be configured for a cache
112
- log_1 = Logger.new(STDOUT)
113
- log_1.level = Logger::DEBUG
114
- log_2 = Logger.new(&quot;log/cachetastic.log&quot;)
115
- log_2.level = Logger::ERROR
116
- configatron.cachetastic_default_options.logger = [log_1, log_2]
117
- </pre>
118
- <h1>Cachetastic::Drb::Server</h1>
119
- <p>
120
- If you want to use Drb and the <a
121
- href="../../classes/Cachetastic/Adapters/Drb.html">Cachetastic::Adapters::Drb</a>
122
- adapter, you&#8216;ll have to use the Cachetastic::Drb::Server that comes
123
- with Cachetastic. Using this server is simple. It gets installed as a
124
- binary when you install the Cachetastic gem.
125
- </p>
126
- <pre>
127
- $ cachetastic_drb_server # that will start the drb server on the host 127.0.0.1 on the port 61676
128
- </pre>
129
- <p>
130
- The server takes to command line parameters: -h &lt;host&gt; -p
131
- &lt;port&gt; -v &lt;verbose&gt; -rv &lt;really verbose&gt;
132
- </p>
133
- <h1>Examples:</h1>
134
- <pre>
135
- class MyAwesomeCache &lt; Cachetastic::Caches::Base
136
- end
137
-
138
- MyAwesomeCache.set(1, [1,2,3])
139
- MyAwesomeCache.get(1) # =&gt; [1,2,3]
140
-
141
- class MyAwesomeCache &lt; Cachetastic::Caches::Base
142
- class &lt;&lt; self
143
- def get(key, x, y)
144
- super(key) do
145
- n = x + y
146
- set(key, n)
147
- n
148
- end
149
- end
150
- end
151
- end
152
-
153
- MyAwesomeCache.get(1, 2, 4) # =&gt; 8
154
- MyAwesomeCache.get(1, 4, 4) # =&gt; 8
155
- </pre>
156
-
157
- </div>
158
71
 
159
72
  <div id="requires-list">
160
73
  <h3 class="section-bar">Required files</h3>
161
74
 
162
75
  <div class="name-list">
163
- rubygems&nbsp;&nbsp;
164
- singleton&nbsp;&nbsp;
165
- logger&nbsp;&nbsp;
166
- yaml&nbsp;&nbsp;
167
- zlib&nbsp;&nbsp;
168
- pp&nbsp;&nbsp;
169
- drb&nbsp;&nbsp;
170
76
  configatron&nbsp;&nbsp;
77
+ logger&nbsp;&nbsp;
78
+ activesupport&nbsp;&nbsp;
79
+ fileutils&nbsp;&nbsp;
171
80
  memcache&nbsp;&nbsp;
172
81
  </div>
173
82
  </div>
@@ -20,28 +20,16 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Classes</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/ActiveRecord/Base.html">ActiveRecord::Base</a><br />
24
- <a href="classes/CGI/Session/CachetasticStore.html">CGI::Session::CachetasticStore</a><br />
23
+ <a href="classes/Cachetastic/Adapters.html">Cachetastic::Adapters</a><br />
25
24
  <a href="classes/Cachetastic/Adapters/Base.html">Cachetastic::Adapters::Base</a><br />
26
- <a href="classes/Cachetastic/Adapters/Drb.html">Cachetastic::Adapters::Drb</a><br />
27
25
  <a href="classes/Cachetastic/Adapters/File.html">Cachetastic::Adapters::File</a><br />
28
- <a href="classes/Cachetastic/Adapters/FileBase.html">Cachetastic::Adapters::FileBase</a><br />
29
- <a href="classes/Cachetastic/Adapters/HtmlFile.html">Cachetastic::Adapters::HtmlFile</a><br />
30
26
  <a href="classes/Cachetastic/Adapters/LocalMemory.html">Cachetastic::Adapters::LocalMemory</a><br />
31
- <a href="classes/Cachetastic/Adapters/Memcache.html">Cachetastic::Adapters::Memcache</a><br />
27
+ <a href="classes/Cachetastic/Adapters/Memcached.html">Cachetastic::Adapters::Memcached</a><br />
28
+ <a href="classes/Cachetastic/Cache.html">Cachetastic::Cache</a><br />
32
29
  <a href="classes/Cachetastic/Cacheable.html">Cachetastic::Cacheable</a><br />
33
30
  <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html">Cachetastic::Cacheable::ClassAndInstanceMethods</a><br />
34
31
  <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html">Cachetastic::Cacheable::ClassOnlyMethods</a><br />
35
- <a href="classes/Cachetastic/Caches/Base.html">Cachetastic::Caches::Base</a><br />
36
- <a href="classes/Cachetastic/Caches/Base/RegisteredCaches.html">Cachetastic::Caches::Base::RegisteredCaches</a><br />
37
- <a href="classes/Cachetastic/Caches/MackSessionCache.html">Cachetastic::Caches::MackSessionCache</a><br />
38
- <a href="classes/Cachetastic/Caches/PageCache.html">Cachetastic::Caches::PageCache</a><br />
39
- <a href="classes/Cachetastic/Caches/RailsSessionCache.html">Cachetastic::Caches::RailsSessionCache</a><br />
40
- <a href="classes/Cachetastic/Connection.html">Cachetastic::Connection</a><br />
41
- <a href="classes/Cachetastic/Errors/UnsupportedAdapter.html">Cachetastic::Errors::UnsupportedAdapter</a><br />
42
32
  <a href="classes/Cachetastic/Logger.html">Cachetastic::Logger</a><br />
43
- <a href="classes/Object.html">Object</a><br />
44
- <a href="classes/String.html">String</a><br />
45
33
  </div>
46
34
  </div>
47
35
  </body>
@@ -20,29 +20,18 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Files</h1>
22
22
  <div id="index-entries">
23
+ <a href="files/LICENSE.html">LICENSE</a><br />
23
24
  <a href="files/README.html">README</a><br />
24
25
  <a href="files/lib/cachetastic_rb.html">lib/cachetastic.rb</a><br />
25
26
  <a href="files/lib/cachetastic/adapters/base_rb.html">lib/cachetastic/adapters/base.rb</a><br />
26
- <a href="files/lib/cachetastic/adapters/drb_rb.html">lib/cachetastic/adapters/drb.rb</a><br />
27
27
  <a href="files/lib/cachetastic/adapters/file_rb.html">lib/cachetastic/adapters/file.rb</a><br />
28
- <a href="files/lib/cachetastic/adapters/file_base_rb.html">lib/cachetastic/adapters/file_base.rb</a><br />
29
- <a href="files/lib/cachetastic/adapters/html_file_rb.html">lib/cachetastic/adapters/html_file.rb</a><br />
30
28
  <a href="files/lib/cachetastic/adapters/local_memory_rb.html">lib/cachetastic/adapters/local_memory.rb</a><br />
31
- <a href="files/lib/cachetastic/adapters/memcache_rb.html">lib/cachetastic/adapters/memcache.rb</a><br />
32
- <a href="files/lib/cachetastic/adapters/store_object_rb.html">lib/cachetastic/adapters/store_object.rb</a><br />
29
+ <a href="files/lib/cachetastic/adapters/memcached_rb.html">lib/cachetastic/adapters/memcached.rb</a><br />
30
+ <a href="files/lib/cachetastic/cache_rb.html">lib/cachetastic/cache.rb</a><br />
33
31
  <a href="files/lib/cachetastic/cacheable_rb.html">lib/cachetastic/cacheable.rb</a><br />
34
- <a href="files/lib/cachetastic/caches/base_rb.html">lib/cachetastic/caches/base.rb</a><br />
35
- <a href="files/lib/cachetastic/caches/mack_session_cache_rb.html">lib/cachetastic/caches/mack_session_cache.rb</a><br />
36
- <a href="files/lib/cachetastic/caches/page_cache_rb.html">lib/cachetastic/caches/page_cache.rb</a><br />
37
- <a href="files/lib/cachetastic/caches/rails_session_cache_rb.html">lib/cachetastic/caches/rails_session_cache.rb</a><br />
38
- <a href="files/lib/cachetastic/connection_rb.html">lib/cachetastic/connection.rb</a><br />
39
- <a href="files/lib/cachetastic/errors/unsupported_adapter_rb.html">lib/cachetastic/errors/unsupported_adapter.rb</a><br />
32
+ <a href="files/lib/cachetastic/extensions/string_rb.html">lib/cachetastic/extensions/string.rb</a><br />
40
33
  <a href="files/lib/cachetastic/logger_rb.html">lib/cachetastic/logger.rb</a><br />
41
- <a href="files/lib/cachetastic/rails_extensions/active_record_base_rb.html">lib/cachetastic/rails_extensions/active_record_base.rb</a><br />
42
- <a href="files/lib/cachetastic/rails_extensions/cgi_session_store_rb.html">lib/cachetastic/rails_extensions/cgi_session_store.rb</a><br />
43
- <a href="files/lib/cachetastic/ruby_extensions/kernel_rb.html">lib/cachetastic/ruby_extensions/kernel.rb</a><br />
44
- <a href="files/lib/cachetastic/ruby_extensions/object_rb.html">lib/cachetastic/ruby_extensions/object.rb</a><br />
45
- <a href="files/lib/cachetastic/ruby_extensions/string_rb.html">lib/cachetastic/ruby_extensions/string.rb</a><br />
34
+ <a href="files/lib/cachetastic/store_object_rb.html">lib/cachetastic/store_object.rb</a><br />
46
35
  </div>
47
36
  </div>
48
37
  </body>
@@ -20,84 +20,32 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Cachetastic/Caches/Base.html#M000058">adapter (Cachetastic::Caches::Base)</a><br />
24
- <a href="classes/Cachetastic/Caches/Base.html#M000061">adapter_supported? (Cachetastic::Caches::Base)</a><br />
25
- <a href="classes/Cachetastic/Caches/Base.html#M000051">all_registered_caches (Cachetastic::Caches::Base)</a><br />
26
- <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000071">cache_class (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
27
- <a href="classes/Cachetastic/Caches/Base.html#M000057">cache_name (Cachetastic::Caches::Base)</a><br />
28
- <a href="classes/Cachetastic/Cacheable.html#M000066">cache_self (Cachetastic::Cacheable)</a><br />
29
- <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000072">cacher (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
30
- <a href="classes/Object.html#M000001">cachetastic_key (Object)</a><br />
31
- <a href="classes/ActiveRecord/Base.html#M000077">cachetastic_key (ActiveRecord::Base)</a><br />
32
- <a href="classes/Cachetastic/Caches/Base.html#M000064">calculate_expiry_time (Cachetastic::Caches::Base)</a><br />
33
- <a href="classes/String.html#M000004">camelcase (String)</a><br />
34
- <a href="classes/Cachetastic/Adapters/Base.html#M000039">configuration (Cachetastic::Adapters::Base)</a><br />
35
- <a href="classes/Cachetastic/Adapters/Base.html#M000038">configuration (Cachetastic::Adapters::Base)</a><br />
36
- <a href="classes/String.html#M000005">constantize (String)</a><br />
37
- <a href="classes/Cachetastic/Adapters/Base.html#M000036">debug? (Cachetastic::Adapters::Base)</a><br />
38
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000012">delete (Cachetastic::Adapters::Memcache)</a><br />
39
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000032">delete (Cachetastic::Adapters::FileBase)</a><br />
40
- <a href="classes/Cachetastic/Caches/Base.html#M000054">delete (Cachetastic::Caches::Base)</a><br />
41
- <a href="classes/Cachetastic/Adapters/Drb.html#M000045">delete (Cachetastic::Adapters::Drb)</a><br />
42
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000027">delete (Cachetastic::Adapters::LocalMemory)</a><br />
43
- <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000069">delete_from_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
44
- <a href="classes/Cachetastic/Caches/Base.html#M000055">expire_all (Cachetastic::Caches::Base)</a><br />
45
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000033">expire_all (Cachetastic::Adapters::FileBase)</a><br />
46
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000024">expire_all (Cachetastic::Adapters::LocalMemory)</a><br />
47
- <a href="classes/Cachetastic/Adapters/Drb.html#M000042">expire_all (Cachetastic::Adapters::Drb)</a><br />
48
- <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000073">expire_all (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
49
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000014">expire_all (Cachetastic::Adapters::Memcache)</a><br />
50
- <a href="classes/Cachetastic/Adapters/File.html#M000047">get (Cachetastic::Adapters::File)</a><br />
51
- <a href="classes/Cachetastic/Caches/Base.html#M000052">get (Cachetastic::Caches::Base)</a><br />
52
- <a href="classes/Cachetastic/Adapters/Drb.html#M000043">get (Cachetastic::Adapters::Drb)</a><br />
53
- <a href="classes/Cachetastic/Adapters/HtmlFile.html#M000007">get (Cachetastic::Adapters::HtmlFile)</a><br />
54
- <a href="classes/Cachetastic/Connection.html#M000076">get (Cachetastic::Connection)</a><br />
55
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000013">get (Cachetastic::Adapters::Memcache)</a><br />
56
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000025">get (Cachetastic::Adapters::LocalMemory)</a><br />
57
- <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000068">get_from_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
58
- <a href="classes/ActiveRecord/Base.html#M000078">get_from_cache (ActiveRecord::Base)</a><br />
59
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000021">get_version (Cachetastic::Adapters::Memcache)</a><br />
60
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000020">increment_version (Cachetastic::Adapters::Memcache)</a><br />
61
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000015">inspect (Cachetastic::Adapters::Memcache)</a><br />
62
- <a href="classes/Object.html#M000002">ivar_cache (Object)</a><br />
63
- <a href="classes/Cachetastic/Caches/Base.html#M000059">logger (Cachetastic::Caches::Base)</a><br />
64
- <a href="classes/Cachetastic/Caches/Base.html#M000062">marshall (Cachetastic::Caches::Base)</a><br />
65
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000018">namespace (Cachetastic::Adapters::Memcache)</a><br />
66
- <a href="classes/Object.html#M000003">needs_method (Object)</a><br />
67
- <a href="classes/Cachetastic/Logger.html#M000074">new (Cachetastic::Logger)</a><br />
68
- <a href="classes/Cachetastic/Caches/Base/RegisteredCaches.html#M000065">new (Cachetastic::Caches::Base::RegisteredCaches)</a><br />
69
- <a href="classes/Cachetastic/Connection.html#M000075">new (Cachetastic::Connection)</a><br />
70
- <a href="classes/Cachetastic/Adapters/Base.html#M000035">new (Cachetastic::Adapters::Base)</a><br />
71
- <a href="classes/Cachetastic/Errors/UnsupportedAdapter.html#M000006">new (Cachetastic::Errors::UnsupportedAdapter)</a><br />
72
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000019">ns_versions (Cachetastic::Adapters::Memcache)</a><br />
73
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000026">set (Cachetastic::Adapters::LocalMemory)</a><br />
74
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000011">set (Cachetastic::Adapters::Memcache)</a><br />
75
- <a href="classes/Cachetastic/Caches/Base.html#M000053">set (Cachetastic::Caches::Base)</a><br />
76
- <a href="classes/Cachetastic/Adapters/File.html#M000048">set (Cachetastic::Adapters::File)</a><br />
77
- <a href="classes/Cachetastic/Adapters/HtmlFile.html#M000008">set (Cachetastic::Adapters::HtmlFile)</a><br />
78
- <a href="classes/Cachetastic/Adapters/Drb.html#M000044">set (Cachetastic::Adapters::Drb)</a><br />
79
- <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000070">set_into_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
80
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000023">setup (Cachetastic::Adapters::LocalMemory)</a><br />
81
- <a href="classes/Cachetastic/Adapters/Drb.html#M000041">setup (Cachetastic::Adapters::Drb)</a><br />
82
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000010">setup (Cachetastic::Adapters::Memcache)</a><br />
83
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000029">setup (Cachetastic::Adapters::FileBase)</a><br />
84
- <a href="classes/Cachetastic/Adapters/Drb.html#M000046">stats (Cachetastic::Adapters::Drb)</a><br />
85
- <a href="classes/Cachetastic/Adapters/Base.html#M000037">stats (Cachetastic::Adapters::Base)</a><br />
86
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000031">stats (Cachetastic::Adapters::FileBase)</a><br />
87
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000017">stats (Cachetastic::Adapters::Memcache)</a><br />
88
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000028">stats (Cachetastic::Adapters::LocalMemory)</a><br />
89
- <a href="classes/Cachetastic/Caches/Base.html#M000056">stats (Cachetastic::Caches::Base)</a><br />
90
- <a href="classes/Cachetastic/Adapters/HtmlFile.html#M000009">store_file_name (Cachetastic::Adapters::HtmlFile)</a><br />
91
- <a href="classes/Cachetastic/Adapters/File.html#M000049">store_file_name (Cachetastic::Adapters::File)</a><br />
92
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000034">store_file_name (Cachetastic::Adapters::FileBase)</a><br />
93
- <a href="classes/Cachetastic/Cacheable.html#M000067">uncache_self (Cachetastic::Cacheable)</a><br />
94
- <a href="classes/Cachetastic/Caches/Base.html#M000063">unmarshall (Cachetastic::Caches::Base)</a><br />
95
- <a href="classes/Cachetastic/Caches/RailsSessionCache.html#M000050">unsupported_adapters (Cachetastic::Caches::RailsSessionCache)</a><br />
96
- <a href="classes/Cachetastic/Caches/Base.html#M000060">unsupported_adapters (Cachetastic::Caches::Base)</a><br />
97
- <a href="classes/Cachetastic/Adapters/Drb.html#M000040">valid? (Cachetastic::Adapters::Drb)</a><br />
98
- <a href="classes/Cachetastic/Adapters/LocalMemory.html#M000022">valid? (Cachetastic::Adapters::LocalMemory)</a><br />
99
- <a href="classes/Cachetastic/Adapters/Memcache.html#M000016">valid? (Cachetastic::Adapters::Memcache)</a><br />
100
- <a href="classes/Cachetastic/Adapters/FileBase.html#M000030">valid? (Cachetastic::Adapters::FileBase)</a><br />
23
+ <a href="classes/Cachetastic/Cache.html#M000022">adapter (Cachetastic::Cache)</a><br />
24
+ <a href="classes/Cachetastic/Adapters.html#M000001">build (Cachetastic::Adapters)</a><br />
25
+ <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000015">cache_class (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
26
+ <a href="classes/Cachetastic/Cacheable.html#M000010">cache_self (Cachetastic::Cacheable)</a><br />
27
+ <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000016">cacher (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
28
+ <a href="classes/Cachetastic/Cache.html#M000025">calculate_expiry_time (Cachetastic::Cache)</a><br />
29
+ <a href="classes/Cachetastic/Cache.html#M000023">clear_adapter! (Cachetastic::Cache)</a><br />
30
+ <a href="classes/Cachetastic/Cache.html#M000020">delete (Cachetastic::Cache)</a><br />
31
+ <a href="classes/Cachetastic/Adapters/Base.html#M000006">delete (Cachetastic::Adapters::Base)</a><br />
32
+ <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000013">delete_from_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
33
+ <a href="classes/Cachetastic/Cache.html#M000021">expire_all (Cachetastic::Cache)</a><br />
34
+ <a href="classes/Cachetastic/Adapters/Base.html#M000007">expire_all (Cachetastic::Adapters::Base)</a><br />
35
+ <a href="classes/Cachetastic/Cacheable/ClassAndInstanceMethods.html#M000017">expire_all (Cachetastic::Cacheable::ClassAndInstanceMethods)</a><br />
36
+ <a href="classes/Cachetastic/Adapters/Base.html#M000004">get (Cachetastic::Adapters::Base)</a><br />
37
+ <a href="classes/Cachetastic/Cache.html#M000018">get (Cachetastic::Cache)</a><br />
38
+ <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000012">get_from_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
39
+ <a href="classes/Cachetastic/Cache.html#M000024">logger (Cachetastic::Cache)</a><br />
40
+ <a href="classes/Cachetastic/Adapters/Base.html#M000003">new (Cachetastic::Adapters::Base)</a><br />
41
+ <a href="classes/Cachetastic/Logger.html#M000026">new (Cachetastic::Logger)</a><br />
42
+ <a href="classes/Cachetastic/Cache.html#M000019">set (Cachetastic::Cache)</a><br />
43
+ <a href="classes/Cachetastic/Adapters/Base.html#M000005">set (Cachetastic::Adapters::Base)</a><br />
44
+ <a href="classes/Cachetastic/Cacheable/ClassOnlyMethods.html#M000014">set_into_cache (Cachetastic::Cacheable::ClassOnlyMethods)</a><br />
45
+ <a href="classes/Cachetastic/Adapters/Base.html#M000008">transform_key (Cachetastic::Adapters::Base)</a><br />
46
+ <a href="classes/Cachetastic/Cacheable.html#M000011">uncache_self (Cachetastic::Cacheable)</a><br />
47
+ <a href="classes/Cachetastic/Adapters/Memcached.html#M000002">valid? (Cachetastic::Adapters::Memcached)</a><br />
48
+ <a href="classes/Cachetastic/Adapters/Base.html#M000009">valid? (Cachetastic::Adapters::Base)</a><br />
101
49
  </div>
102
50
  </div>
103
51
  </body>
data/lib/cachetastic.rb CHANGED
@@ -1,74 +1,20 @@
1
- # :include: README
2
- require 'rubygems'
3
- require 'singleton'
4
- require 'logger'
5
- require 'yaml'
6
- require 'zlib'
7
- require 'pp'
8
- require 'drb'
9
1
  require 'configatron'
10
- # require 'mack-facets'
11
- begin
12
- require 'memcache'
13
- rescue Exception => e
14
- # if you don't have memcache installed, don't
15
- # blow up, print a message, and you can't use
16
- # the memcache adapter.
17
- puts "CACHETASTIC: Warning: You don't have the memcache gem installed which means you can't use the Cachetastic::Adapters::Memcache adapter."
18
- end
19
-
20
- class Object
21
- # Uses <code>define_method</code> to create an empty for the method parameter defined.
22
- # That method will then raise MethodNotImplemented. This is useful for creating interfaces
23
- # and you want to stub out methods that others need to implement.
24
- def self.needs_method(meth)
25
- define_method(meth) do
26
- raise NoMethodError.new("The interface you are using requires you define the following method '#{meth}'")
27
- end
28
- end
29
- end
2
+ require 'logger'
3
+ require 'activesupport'
4
+ require 'fileutils'
5
+ require 'memcache'
30
6
 
31
- module Cachetastic #:nodoc:#
32
- module Caches #:nodoc:#
33
- end
34
- module Adapters #:nodoc:#
35
- end
36
- module Errors #:nodoc:#
37
- end
38
- module Cacheable
39
- end
7
+ Dir.glob(File.join(File.dirname(__FILE__), 'cachetastic', '**/*.rb')).each do |f|
8
+ require File.expand_path(f)
40
9
  end
41
- module ActiveRecord #:nodoc:#
42
- end
43
-
44
- home = File.join(File.dirname(__FILE__), 'cachetastic')
45
-
46
- require File.join(home, 'connection')
47
- require File.join(home, 'logger')
48
- require File.join(home, 'caches/base')
49
- require File.join(home, 'caches/page_cache')
50
- require File.join(home, 'caches/rails_session_cache')
51
- require File.join(home, 'caches/mack_session_cache')
52
- require File.join(home, 'errors/unsupported_adapter')
53
- require File.join(home, 'adapters/base')
54
- require File.join(home, 'adapters/store_object')
55
- require File.join(home, 'adapters/memcache')
56
- require File.join(home, 'adapters/local_memory')
57
- require File.join(home, 'adapters/file_base')
58
- require File.join(home, 'adapters/file')
59
- require File.join(home, 'adapters/html_file')
60
- require File.join(home, 'adapters/drb')
61
- require File.join(home, 'cacheable')
62
- require File.join(home, 'rails_extensions/active_record_base')
63
- require File.join(home, 'rails_extensions/cgi_session_store')
64
- require File.join(home, 'ruby_extensions/object')
65
- require File.join(home, 'ruby_extensions/kernel')
66
- require File.join(home, 'ruby_extensions/string')
67
-
68
- configatron.cachetastic_default_options.set_default(:debug, false)
69
- configatron.cachetastic_default_options.set_default(:adapter, :local_memory)
70
- configatron.cachetastic_default_options.set_default(:logger, ::Logger.new(STDOUT))
71
10
 
72
- #--
73
- # http://rdoc.sourceforge.net/doc/index.html
74
- #++
11
+ configatron.cachetastic.defaults.set_default(:marshal_method, :none)
12
+ configatron.cachetastic.defaults.set_default(:expiry_swing, 0)
13
+ configatron.cachetastic.defaults.set_default(:default_expiry, 86400)
14
+ configatron.cachetastic.defaults.set_default(:debug, true)
15
+ configatron.cachetastic.defaults.set_default(:adapter, Cachetastic::Adapters::LocalMemory)
16
+ log_path = File.join(FileUtils.pwd, 'log', 'cachetastic.log')
17
+ FileUtils.mkdir_p(File.dirname(log_path))
18
+ logger = ::Logger.new(log_path)
19
+ logger.level = ::Logger::DEBUG
20
+ configatron.cachetastic.defaults.set_default(:logger, logger)
@@ -1,76 +1,178 @@
1
- # This class is the interface used to develop adapters for stores.
2
- # Stores are where the data is actually held. These could be local memory,
3
- # memcached, a database, the file system, etc...
4
- # If you implement this API, then you should be able to plug in different
5
- # stores for your caches without having to change any of your code.
6
- #
7
- # === Methods that need to be implemented:
8
- # * setup - used to setup the implementation of the adapter.
9
- # * set(key, object, expiry) - sets an object into the store using the given key and the expiry time.
10
- # * get(key) - returns an object from the store for a given key.
11
- # * delete(key, delay) - deletes an object from the store for a given key. If the store supports it, a delay can be used.
12
- # * expire_all - expires all objects in the store for a given cache.
13
- # * stats - returns statistics for the store.
14
- # * valid? - used to test whether or not the store is still valid. If this returns false a new instance of the adapter is created by Cachetastic::Connection
15
- class Cachetastic::Adapters::Base
16
-
17
- # attr_reader :all_options
18
- # attr_reader :store_options
19
- # attr_reader :servers
20
- attr_reader :name
21
- # attr_reader :logging
22
- attr_reader :logger
23
-
24
- def initialize(name)
25
- @name = name
26
- @logger = Cachetastic::Logger.new(configuration.retrieve(:logger, ::Logger.new(STDOUT)))
27
- setup
28
- if self.debug?
29
- self.logger.debug(self.name, :self, self.inspect)
30
- end
31
- end
32
-
33
- needs_method :setup
34
- needs_method :set
35
- needs_method :get
36
- needs_method :delete
37
- needs_method :expire_all
38
- needs_method :stats
39
- needs_method :valid?
40
-
41
- # Returns true/or falsed based on whether or not the debug setting is set to true in the
42
- # configuration file. If the config setting is set, then false is returned.
43
- def debug?
44
- configuration.retrieve(:debug, false)
45
- end
46
-
47
- def stats
48
- cache_name = self.name.to_s.camelize
49
- adapter_type = self.class.to_s.gsub('Cachetastic::Adapters::', '')
50
- s = "Cache: #{cache_name}\nStore Type: #{adapter_type}\n"
51
- if self.servers
52
- servers = self.servers.join(',')
53
- s += "Servers: #{servers}"
54
- end
55
- puts s
56
- end
57
-
58
- def configuration
59
- Cachetastic::Adapters::Base.configuration(self.name)
60
- end
61
-
62
- class << self
63
- # Returns either the options
64
- # Options need to be specified in configatrion as the methodized name of the cache with
65
- # _options attached at the end.
66
- # Examples:
67
- # Cachetastic::Caches::PageCache # => cachetastic_caches_page_cache_options
68
- # MyAwesomeCache # => my_awesome_cache_options
69
- def configuration(name)
70
- name = "#{name}_options"
71
- conf = configatron.retrieve(name, configatron.cachetastic_default_options)
72
- conf
73
- end
74
- end
75
-
76
- end
1
+ module Cachetastic # :nodoc:
2
+ module Adapters
3
+
4
+ class << self
5
+
6
+ # This method will return the appropriate
7
+ # <tt>Cachetastic::Adapters::Base</tt> class that is defined
8
+ # for the Class passed in. If an adapter has not been
9
+ # defined for the Class than the default adapter is returned.
10
+ #
11
+ # Examples:
12
+ # configatron.cachetastic.defaults.adapter = Cachetastic::Adapters::LocalMemory
13
+ # configatron.cachetastic.user.adapter = Cachetastic::Adapters::Memcached
14
+ # Cachetastic::Adapters.build(User).class # => Cachetastic::Adapters::Memcached
15
+ # Cachetastic::Adapters.build(Comment).class # => Cachetastic::Adapters::LocalMemory
16
+ def build(klass)
17
+ adp = klass.to_configatron(:cachetastic).adapter
18
+ if adp.nil?
19
+ adp = configatron.cachetastic.defaults.adapter
20
+ end
21
+ adp.new(klass)
22
+ end
23
+
24
+ end # class << self
25
+
26
+ # This class should be extended to create new adapters for various
27
+ # backends. It is important that all subclasses call the <tt>initialize</tt>
28
+ # method in this base, otherwise things just will not work right.
29
+ #
30
+ # This base class provides common functionality and an API for all
31
+ # adapters to be used with Cachetastic.
32
+ #
33
+ # The default settings for all adapters are:
34
+ #
35
+ # configatron.cachetastic.defaults.marshal_method = :none
36
+ # configatron.cachetastic.defaults.expiry_swing = 0
37
+ # configatron.cachetastic.defaults.default_expiry = 86400
38
+ # configatron.cachetastic.defaults.debug = true
39
+ # configatron.cachetastic.defaults.adapter = Cachetastic::Adapters::LocalMemory
40
+ # logger = ::Logger.new(File.join(FileUtils.pwd, 'log', 'cachetastic.log'))
41
+ # logger.level = ::Logger::DEBUG
42
+ # configatron.cachetastic.defaults.logger = logger
43
+ #
44
+ # See the README for more information on what each of those settings mean,
45
+ # and what are values may be used for each one.
46
+ class Base
47
+
48
+ # The Class that this adapter is associated with. Note that it is a
49
+ # <i>class</i> reference and not an instance reference.
50
+ attr_accessor :klass
51
+
52
+ # Creates a new adapter. It takes a class reference to tie the
53
+ # instance of the adapter to a particular class. Note that it is a
54
+ # <i>class</i> reference and not an instance reference.
55
+ #
56
+ # Examples:
57
+ # Cachetastic::Adapters::Base.new(User)
58
+ #
59
+ # Adapters are configured using the Configatron gem.
60
+ #
61
+ # Examples:
62
+ # configatron.cachetastic.user.adapter = Cachetastic::Adapters::File
63
+ # configatron.cachetastic.user.expiry_time = 5.hours
64
+ # configatron.cachetastic.defaults.expiry_time = 24.hours
65
+ #
66
+ # Refered to each adapter for its specific configuration settings.
67
+ def initialize(klass)
68
+ self.klass = klass
69
+ configatron.cachetastic.defaults.configatron_keys.each do |key|
70
+ define_accessor(key)
71
+ self.send("#{key}=", configatron.cachetastic.defaults.send(key))
72
+ end
73
+ klass.to_configatron(:cachetastic).configatron_keys.each do |key|
74
+ define_accessor(key)
75
+ self.send("#{key}=", klass.to_configatron(:cachetastic).send(key))
76
+ end
77
+ end
78
+
79
+ # <b>This method MUST be implemented by a subclass!</b>
80
+ #
81
+ # The implementation of this method should take a key and return
82
+ # an associated object, if available, from the underlying persistence
83
+ # layer.
84
+ def get(key)
85
+ raise NoMethodError.new('get')
86
+ end # get
87
+
88
+ # <b>This method MUST be implemented by a subclass!</b>
89
+ #
90
+ # The implementation of this method should take a key, a value, and
91
+ # an expiry time and save it to the persistence store, where it should
92
+ # live until it is either deleted by the user of the expiry time has passed.
93
+ def set(key, value, expiry_time = configatron.cachetastic.defaults.default_expiry)
94
+ raise NoMethodError.new('set')
95
+ end # set
96
+
97
+ # <b>This method MUST be implemented by a subclass!</b>
98
+ #
99
+ # The implementation of this method should take a key and remove
100
+ # an object, if it exists, from an underlying persistence store.
101
+ def delete(key)
102
+ raise NoMethodError.new('delete')
103
+ end # delete
104
+
105
+ # <b>This method MUST be implemented by a subclass!</b>
106
+ #
107
+ # The implementation of this method is expected to delete all
108
+ # objects belonging to the associated cache from the underlying
109
+ # persistence store. It is <b>NOT</b> meant to delete <b>ALL</b>
110
+ # objects across <b>ALL</b> caches for the underlying persistence
111
+ # store. That would be very very bad!!
112
+ def expire_all
113
+ raise NoMethodError.new('expire_all')
114
+ end # expire_all
115
+
116
+ # Allows an adapter to transform the key
117
+ # to a safe representation for it's backend.
118
+ # For example, the key: '$*...123()%~q' is not a
119
+ # key for the file system, so the
120
+ # Cachetastic::Adapters::File class should override
121
+ # this to make it safe for the file system.
122
+ def transform_key(key)
123
+ key
124
+ end
125
+
126
+ # <b>This method MUST be implemented by a subclass!</b>
127
+ #
128
+ # The implementation of this method should return <tt>true</tt>
129
+ # if the adapter is in a valid state, and <tt>false</tt> if it is
130
+ # not.
131
+ def valid?
132
+ true
133
+ end
134
+
135
+ def debug? # :nodoc:
136
+ return self.debug if self.respond_to?(:debug)
137
+ return false
138
+ end
139
+
140
+ def marshal(value) # :nodoc:
141
+ return nil if value.nil?
142
+ case self.marshal_method.to_sym
143
+ when :yaml
144
+ return YAML.dump(value)
145
+ when :ruby
146
+ return Marshal.dump(value)
147
+ else
148
+ return value
149
+ end
150
+ end
151
+
152
+ def unmarshal(value) # :nodoc:
153
+ return nil if value.nil?
154
+ case self.marshal_method.to_sym
155
+ when :yaml
156
+ return YAML.load(value)
157
+ when :ruby
158
+ return Marshal.load(value)
159
+ else
160
+ return value
161
+ end
162
+ end
163
+
164
+ private
165
+ def define_accessor(key)
166
+ instance_eval(%{
167
+ def #{key}
168
+ @#{key}
169
+ end
170
+ def #{key}=(x)
171
+ @#{key} = x
172
+ end
173
+ })
174
+ end
175
+
176
+ end # Base
177
+ end # Adapters
178
+ end # Cachetastic