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.
@@ -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
@@ -1,4 +1,4 @@
1
1
  module Aweplug
2
- VERSION='1.0.0.a11'
2
+ VERSION='1.0.0.a12'
3
3
  end
4
4
 
@@ -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.a11
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-01-30 00:00:00.000000000 Z
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: 2.1.10
202
+ rubygems_version: 1.8.25
180
203
  signing_key:
181
- specification_version: 4
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