cache_cache 1.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cache_cache.rb +106 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2212d8d62c207a2ecb08200a5522d388f4269acb
4
+ data.tar.gz: 50a84cb1f102d2f733ed2a5004e38fe37c179aa4
5
+ SHA512:
6
+ metadata.gz: 1714a2a60833bc4235bedfed36a9b94f3a0118bb5a44a110c1a6de1d3c19611443cc690c1566216f8cd760d80833ae31e5e5103695a8767767dfb9b5d995e8fc
7
+ data.tar.gz: e706767f50a658db1ea0ec3bc6823362cc6668eb4b11a6c9eff3b872b992d10435e07cb8e54027ddd470a8dc8f85c61114c1e8bcf4740a94a34532d6fb1b8cc0
@@ -0,0 +1,106 @@
1
+ module Rails
2
+
3
+ # CacheCache allow you to manage dynamically multiple group of HTML5 manifest.
4
+ # CacheCache use rails cache to store generated manifests.
5
+ #
6
+ class CacheCache
7
+
8
+ # Constructor
9
+ #
10
+ def initialize(options = {}, &block)
11
+ @memory_store = options.fetch(:memory_store, ActiveSupport::Cache::MemoryStore.new)
12
+ @group = options.fetch(:group, :default)
13
+
14
+ @cache = { }
15
+ @network = { }
16
+ @fallback = { }
17
+
18
+ instance_eval(&block) if block_given?
19
+ end
20
+
21
+ # Get / Set an entry into the cache section of the manifest
22
+ #
23
+ def cache(entry = nil)
24
+ unless entry.nil?
25
+ @cache[@group] ||= []
26
+ @cache[@group] << entry
27
+ end
28
+
29
+ @cache[@group]
30
+ end
31
+
32
+ # Get / Set an entry into the network section of the manifest
33
+ #
34
+ def network(entry = nil)
35
+ unless entry.nil?
36
+ @network[@group] ||= []
37
+ @network[@group] << entry
38
+ end
39
+
40
+ @network[@group]
41
+ end
42
+
43
+ # Get / Set an entry into the fallback section of the manifest
44
+ #
45
+ def fallback(entry = nil)
46
+ unless entry.nil?
47
+ @fallback[@group] ||= []
48
+ @fallback[@group] << entry
49
+ end
50
+
51
+ @fallback[@group]
52
+ end
53
+
54
+ # Save the current manifest
55
+ #
56
+ def save
57
+ @memory_store.write(self.label, self.manifest)
58
+ end
59
+
60
+ # Get the manifest
61
+ #
62
+ def manifest
63
+ return (@memory_store.read(self.label) or self.generate)
64
+ end
65
+
66
+ # Generate the manifest
67
+ #
68
+ def generate
69
+ [
70
+ 'CACHE MANIFEST' ,
71
+ self.spoor ,
72
+ 'CACHE:' ,
73
+ self.cache ,
74
+ 'NETWORK:' ,
75
+ self.network ,
76
+ 'FALLBACK:' ,
77
+ self.fallback ,
78
+ ].join("\n")
79
+ end
80
+
81
+ # Get / Set the current group
82
+ #
83
+ def group(group_name = nil)
84
+ @group = group_name unless group_name.nil?
85
+ @group
86
+ end
87
+
88
+ # Get the spoor of the manifest
89
+ #
90
+ def spoor
91
+ "# generated by cache_cache"
92
+ end
93
+
94
+ # Get label
95
+ #
96
+ def label
97
+ "cache_cache_#{@group}"
98
+ end
99
+
100
+ # Get the manifest
101
+ #
102
+ def to_s
103
+ self.manifest
104
+ end
105
+ end
106
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cache_cache
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Clement Bruchon
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: CacheCache allow you to manage dynamically multiple group of HTML5 manifest
14
+ using rails cache.
15
+ email: clement.bruchon@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/cache_cache.rb
21
+ homepage: https://github.com/Oxyless/cache_cache
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.0.2
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Dynamic HTML5 manifest generator
45
+ test_files: []