aweplug 1.0.0.a11 → 1.0.0.a12
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/lib/aweplug/cache/yaml_file_cache.rb +93 -0
- data/lib/aweplug/version.rb +1 -1
- data/spec/aweplug/cache/yaml_file_cache_spec.rb +47 -0
- metadata +37 -13
- checksums.yaml +0 -7
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'yaml/store'
|
2
|
+
|
3
|
+
module Aweplug
|
4
|
+
# Public: A simple caching implementation.
|
5
|
+
# Internally it using a YAML::Store for a file backing. It also saves
|
6
|
+
# data in a hash for the life of the object. Any keys which are
|
7
|
+
# Strings are frozen before being used.
|
8
|
+
class YamlFileCache
|
9
|
+
# Public: Initialization method.
|
10
|
+
#
|
11
|
+
# opts - A Hash of options
|
12
|
+
# filename: Name of the File used for caching. Defaults to
|
13
|
+
# 'tmp/cache.store'.
|
14
|
+
#
|
15
|
+
# Examples
|
16
|
+
#
|
17
|
+
# store = Aweplug::YamlFileCache.new
|
18
|
+
# store.write('key', 'data')
|
19
|
+
# # => 'data'
|
20
|
+
# store.read('key')
|
21
|
+
# # => 'data'
|
22
|
+
#
|
23
|
+
# Returns a new instance of the cache.
|
24
|
+
def initialize(opts = {})
|
25
|
+
opts.merge!({filename: 'tmp/cache.store'})
|
26
|
+
@file_store = YAML::Store.new opts[:filename]
|
27
|
+
@memory_store = {}
|
28
|
+
end
|
29
|
+
|
30
|
+
# Public: Retrieves the data stored previously under the given key.
|
31
|
+
#
|
32
|
+
# key - key part of a key value pair
|
33
|
+
#
|
34
|
+
# Examples
|
35
|
+
#
|
36
|
+
# store.read('my_key')
|
37
|
+
# # => 'my_data'
|
38
|
+
#
|
39
|
+
# Returns the data associated with the key.
|
40
|
+
def read(key)
|
41
|
+
key.freeze if key.is_a? String
|
42
|
+
|
43
|
+
if @memory_store.has_key? key
|
44
|
+
@memory_store[key]
|
45
|
+
else
|
46
|
+
@file_store.transaction do
|
47
|
+
@memory_store[key] = @file_store[key]
|
48
|
+
end
|
49
|
+
@memory_store[key]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Public: Adds data to the cache.
|
54
|
+
#
|
55
|
+
# key - A key for the cache, strings or symbols should be used
|
56
|
+
# value - Data to store in the cache
|
57
|
+
#
|
58
|
+
# Examples
|
59
|
+
#
|
60
|
+
# store.write(:pi, 3.14)
|
61
|
+
# # => 3.14
|
62
|
+
#
|
63
|
+
# Returns the data just saved.
|
64
|
+
def write(key, value)
|
65
|
+
key.freeze if key.is_a? String
|
66
|
+
|
67
|
+
@memory_store[key] = value
|
68
|
+
@file_store.transaction do
|
69
|
+
@file_store[key] = value
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Public: Retreives the value from the cache, or the return of the Block.
|
74
|
+
#
|
75
|
+
# key - Key in the cache to retreive.
|
76
|
+
# block - The block to be evaluated for a default value.
|
77
|
+
#
|
78
|
+
# Examples
|
79
|
+
#
|
80
|
+
# store.fetch(key) { 'new data' }
|
81
|
+
# # => 'new data'
|
82
|
+
# store.write(key, 23)
|
83
|
+
# store.fetch(key) { 'new data' }
|
84
|
+
# # => 23
|
85
|
+
#
|
86
|
+
# Returns the value in the cache, or the default supplied from the block.
|
87
|
+
def fetch(key)
|
88
|
+
key.freeze if key.is_a? String
|
89
|
+
|
90
|
+
read(key) || yield.tap { |data| write(key, data) }
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/aweplug/version.rb
CHANGED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'aweplug/cache/yaml_file_cache'
|
3
|
+
|
4
|
+
describe Aweplug::YamlFileCache do
|
5
|
+
specify 'it should respond to #write' do
|
6
|
+
expect(subject).to respond_to :write
|
7
|
+
end
|
8
|
+
specify 'it should respond to #fetch' do
|
9
|
+
expect(subject).to respond_to :fetch
|
10
|
+
end
|
11
|
+
specify 'it should respond to #read' do
|
12
|
+
expect(subject).to respond_to :read
|
13
|
+
end
|
14
|
+
context 'with a new instance' do
|
15
|
+
subject = Aweplug::YamlFileCache.new
|
16
|
+
# destroy any file stores
|
17
|
+
before { File.delete 'tmp/cache.store' if File.exists? 'tmp/cache.store' }
|
18
|
+
|
19
|
+
specify 'should return nil on #read' do
|
20
|
+
expect(subject.read 'key').to be_nil
|
21
|
+
end
|
22
|
+
specify '#fetch with a block should return what the block returns' do
|
23
|
+
expect(subject.fetch('key1') { 3 }).to be_eql 3
|
24
|
+
end
|
25
|
+
specify '#fetch should not return the default if the key is in the cache' do
|
26
|
+
subject.write(:key_fetch, 4)
|
27
|
+
expect(subject.fetch(:key_fetch) { 3 }).to be_eql 4
|
28
|
+
end
|
29
|
+
specify '#write should return the data written in yaml' do
|
30
|
+
expect(subject.write('key3', 'data3')).to be_eql 'data3'
|
31
|
+
end
|
32
|
+
specify '#read after #write to return data sent via #write' do
|
33
|
+
subject.write('key2', 'data')
|
34
|
+
expect(subject.read('key2')).to be_eql 'data'
|
35
|
+
end
|
36
|
+
specify 'multiple calls to #read should return the same object' do
|
37
|
+
key = 'id_test'
|
38
|
+
data = 'data test'
|
39
|
+
data_id = data.__id__
|
40
|
+
subject.write(key, data)
|
41
|
+
expect(subject.read(key).__id__).to be_eql data_id
|
42
|
+
expect(subject.read(key).__id__).to be_eql data_id
|
43
|
+
expect(subject.read(key).__id__).to be_eql data_id
|
44
|
+
expect(subject.read(key).__id__).to be_eql data_id
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
metadata
CHANGED
@@ -1,34 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aweplug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.a12
|
5
|
+
prerelease: 6
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- LightGuard
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-02-04 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: octokit
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 1.24.0
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 1.24.0
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: faraday
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: 0.8.7
|
34
38
|
- - <
|
@@ -37,8 +41,9 @@ dependencies:
|
|
37
41
|
type: :runtime
|
38
42
|
prerelease: false
|
39
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
40
45
|
requirements:
|
41
|
-
- - '>='
|
46
|
+
- - ! '>='
|
42
47
|
- !ruby/object:Gem::Version
|
43
48
|
version: 0.8.7
|
44
49
|
- - <
|
@@ -47,20 +52,23 @@ dependencies:
|
|
47
52
|
- !ruby/object:Gem::Dependency
|
48
53
|
name: faraday_middleware
|
49
54
|
requirement: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
50
56
|
requirements:
|
51
|
-
- - '>='
|
57
|
+
- - ! '>='
|
52
58
|
- !ruby/object:Gem::Version
|
53
59
|
version: 0.9.0
|
54
60
|
type: :runtime
|
55
61
|
prerelease: false
|
56
62
|
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
57
64
|
requirements:
|
58
|
-
- - '>='
|
65
|
+
- - ! '>='
|
59
66
|
- !ruby/object:Gem::Version
|
60
67
|
version: 0.9.0
|
61
68
|
- !ruby/object:Gem::Dependency
|
62
69
|
name: curb
|
63
70
|
requirement: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
64
72
|
requirements:
|
65
73
|
- - ~>
|
66
74
|
- !ruby/object:Gem::Version
|
@@ -68,6 +76,7 @@ dependencies:
|
|
68
76
|
type: :runtime
|
69
77
|
prerelease: false
|
70
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
71
80
|
requirements:
|
72
81
|
- - ~>
|
73
82
|
- !ruby/object:Gem::Version
|
@@ -75,6 +84,7 @@ dependencies:
|
|
75
84
|
- !ruby/object:Gem::Dependency
|
76
85
|
name: oauth
|
77
86
|
requirement: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
78
88
|
requirements:
|
79
89
|
- - ~>
|
80
90
|
- !ruby/object:Gem::Version
|
@@ -82,6 +92,7 @@ dependencies:
|
|
82
92
|
type: :runtime
|
83
93
|
prerelease: false
|
84
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
85
96
|
requirements:
|
86
97
|
- - ~>
|
87
98
|
- !ruby/object:Gem::Version
|
@@ -89,6 +100,7 @@ dependencies:
|
|
89
100
|
- !ruby/object:Gem::Dependency
|
90
101
|
name: guard-rspec
|
91
102
|
requirement: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
92
104
|
requirements:
|
93
105
|
- - ~>
|
94
106
|
- !ruby/object:Gem::Version
|
@@ -96,6 +108,7 @@ dependencies:
|
|
96
108
|
type: :development
|
97
109
|
prerelease: false
|
98
110
|
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
99
112
|
requirements:
|
100
113
|
- - ~>
|
101
114
|
- !ruby/object:Gem::Version
|
@@ -103,6 +116,7 @@ dependencies:
|
|
103
116
|
- !ruby/object:Gem::Dependency
|
104
117
|
name: rake
|
105
118
|
requirement: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
106
120
|
requirements:
|
107
121
|
- - ~>
|
108
122
|
- !ruby/object:Gem::Version
|
@@ -110,6 +124,7 @@ dependencies:
|
|
110
124
|
type: :development
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
113
128
|
requirements:
|
114
129
|
- - ~>
|
115
130
|
- !ruby/object:Gem::Version
|
@@ -117,6 +132,7 @@ dependencies:
|
|
117
132
|
- !ruby/object:Gem::Dependency
|
118
133
|
name: pry
|
119
134
|
requirement: !ruby/object:Gem::Requirement
|
135
|
+
none: false
|
120
136
|
requirements:
|
121
137
|
- - ~>
|
122
138
|
- !ruby/object:Gem::Version
|
@@ -124,6 +140,7 @@ dependencies:
|
|
124
140
|
type: :development
|
125
141
|
prerelease: false
|
126
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
none: false
|
127
144
|
requirements:
|
128
145
|
- - ~>
|
129
146
|
- !ruby/object:Gem::Version
|
@@ -145,6 +162,7 @@ files:
|
|
145
162
|
- Rakefile
|
146
163
|
- aweplug.gemspec
|
147
164
|
- lib/aweplug.rb
|
165
|
+
- lib/aweplug/cache/yaml_file_cache.rb
|
148
166
|
- lib/aweplug/extensions/asciidoc_example.rb
|
149
167
|
- lib/aweplug/extensions/kramdown_quickstart.rb
|
150
168
|
- lib/aweplug/extensions/sections.rb
|
@@ -156,31 +174,37 @@ files:
|
|
156
174
|
- lib/aweplug/helpers/vimeo.rb
|
157
175
|
- lib/aweplug/transformers/.gitkeep
|
158
176
|
- lib/aweplug/version.rb
|
177
|
+
- spec/aweplug/cache/yaml_file_cache_spec.rb
|
159
178
|
- spec/spec_helper.rb
|
160
179
|
homepage: https://github.com/awestruct/aweplug
|
161
180
|
licenses: []
|
162
|
-
metadata: {}
|
163
181
|
post_install_message:
|
164
182
|
rdoc_options: []
|
165
183
|
require_paths:
|
166
184
|
- lib
|
167
185
|
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
168
187
|
requirements:
|
169
|
-
- - '>='
|
188
|
+
- - ! '>='
|
170
189
|
- !ruby/object:Gem::Version
|
171
190
|
version: '0'
|
191
|
+
segments:
|
192
|
+
- 0
|
193
|
+
hash: 433450108911152361
|
172
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
173
196
|
requirements:
|
174
|
-
- - '>'
|
197
|
+
- - ! '>'
|
175
198
|
- !ruby/object:Gem::Version
|
176
199
|
version: 1.3.1
|
177
200
|
requirements: []
|
178
201
|
rubyforge_project:
|
179
|
-
rubygems_version:
|
202
|
+
rubygems_version: 1.8.25
|
180
203
|
signing_key:
|
181
|
-
specification_version:
|
204
|
+
specification_version: 3
|
182
205
|
summary: This set of Awestruct extensions includes helpful tools, extensions and
|
183
206
|
helpers for building a website using Awestruct. It includes extensions for accessing
|
184
207
|
Github, JIRA, managing identities and others.
|
185
208
|
test_files:
|
209
|
+
- spec/aweplug/cache/yaml_file_cache_spec.rb
|
186
210
|
- spec/spec_helper.rb
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 3e85962146944a5957b612d3e2145abdf3299312
|
4
|
-
data.tar.gz: 22e56ca95667d439b2889b77d0294cd8107a23df
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: eddcda2c60446ca4671b3ef3f88beabe7ede92e9c8f77f56880542af5e8ce46d34cbd666e2fc281831d3acb0062f55801fd53c3a077d112d44c604f600fa4942
|
7
|
-
data.tar.gz: ff17e0caf78fd33124b0b1a56b7723b205ce1ac56488405313f2f865ae3b4aec941707573eabb577ff0289f66ce58d40bd777d748ec2c41987cf4f969f9e578a
|