wire-framework 0.1.4.2 → 0.1.4.3

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/app/cache.rb +50 -30
  3. data/lib/wire.rb +1 -1
  4. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fb0cb127428e965623ad670dfcdf591c54dcb84
4
- data.tar.gz: 9bffa2b55ea5271e0dfdc87a5f5b5a916af48f73
3
+ metadata.gz: a6997ff5f85fff3c2e802b6a63f06bcba2407a62
4
+ data.tar.gz: 610d0c19ffb07162f7ca592695e249f08389d24e
5
5
  SHA512:
6
- metadata.gz: 28e3e80dd115e2e217e69bd6faf5033232569ae3f4584c7151cab5a26fada4067665d91dd03068922ef6c07100ab4fec8a0434e00c610eccd028356de541548d
7
- data.tar.gz: 319d6e21f2f09a68b57a12a4732a74b4974b2031dc519b98e2da0b8868cdaa1fe6ae0d502d4190d974f46d5648584373fd3ec6aff27e4b67a53706ce67a43233
6
+ metadata.gz: eda459dd86187ecfc143ec90c0235f2e02d108f545fffd83f8c828c57b373dbfd2f1132d147614678564b10ab505a18901b94f6fcf151a0f7dd2981ed9e8fe6c
7
+ data.tar.gz: 02e89437969cbab4d4dc8e14f6fd2c4551bf03fe8bead2ef2d3a6ac0107f669c51af872facf03e257edd6093f96e4718f7cadf3392170ad500cd95c3fb2d8f16
data/lib/app/cache.rb CHANGED
@@ -2,6 +2,8 @@ require_relative '../app'
2
2
  require_relative '../closet/resource'
3
3
  require_relative '../app/render'
4
4
 
5
+ require 'lmdb'
6
+
5
7
  module Cache
6
8
  module Memory
7
9
  include Wire::App
@@ -10,55 +12,73 @@ module Cache
10
12
 
11
13
  $cache = {}
12
14
 
13
- def self.write_aware
14
- $current_resource[:write_aware] = true
15
- end
16
-
17
15
  def self.update_cache(context)
18
- action = (context.uri.length == 3) ? :readAll : :read
19
- content = forward(action,context)
20
- temp = context.uri.dup
21
- temp.shift
22
- target = $cache
23
- until temp.empty?
24
- current = temp.shift
25
- unless target[current]
26
- target[current] = {}
16
+ uri = context.uri.join('/')
17
+ all = context.uri[0..3].join('/')
18
+ env = $cache[context.app[:remote_uri]]
19
+ db = env.database
20
+ begin
21
+ if [:create,:update,:delete].include? context.action
22
+ result = forward(:readAll,context)
23
+ env.transaction do
24
+ db[all] = result
25
+ end
26
+ result = nil
27
+ end
28
+ if context.uri[3]
29
+ result = forward(:read,context)
30
+ else
31
+ result = forward(:readAll,context)
27
32
  end
28
- target = target[current]
33
+ env.transaction do
34
+ db[uri] = result
35
+ end
36
+ rescue RestClient::ResourceNotFound
37
+ # gracefully ignore
38
+ result = nil
29
39
  end
30
- target = (context.uri.length == 3) ? target[:all] : target
31
- target = content
40
+ result
32
41
  end
33
42
 
34
43
  def self.get_cached(context)
35
- temp = context.uri.dup
36
- temp.shift
37
- result = $cache
38
- until temp.empty?
39
- result = result[temp.shift]
40
- end
41
- if context.uri.length == 3
42
- result = result[:all]
44
+ uri = context.uri.join('/')
45
+ env = $cache[context.app[:remote_uri]]
46
+ db = env.database
47
+ result = nil
48
+ env.transaction do
49
+ result = db[uri]
43
50
  end
44
51
  result
45
52
  end
46
53
 
47
54
  def self.invoke(actions,context)
55
+
56
+ # Create Cache if not set up
57
+ unless $cache[context.app[:remote_uri]]
58
+ $cache[context.app[:remote_uri]] = LMDB.new("/tmp/cache/#{context.app[:remote_uri]}")
59
+ end
60
+
61
+ begin
48
62
  case context.action
49
63
  when :create,:update,:delete
50
64
  result = forward(context.action,context)
51
- if context.resource[:write_aware]
52
- update_cache(context)
53
- end
65
+ update_cache(context) # write aware
54
66
  result
55
- when :read
67
+ when :read,:readAll
56
68
  cached = get_cached(context)
69
+ ap cached
57
70
  unless cached
58
71
  cached = update_cache(context)
59
72
  end
60
- cached
73
+ if cached
74
+ cached
75
+ else
76
+ 404
77
+ end
78
+ end
79
+ rescue RestClient::ResourceNotFound
80
+ 404
61
81
  end
62
82
  end
63
83
  end
64
- end
84
+ end
data/lib/wire.rb CHANGED
@@ -24,5 +24,5 @@ end
24
24
  # @author Bryan T. Meyers
25
25
  module Wire
26
26
  # Current version of the Wire Gem
27
- VERSION = '0.1.4.2'
27
+ VERSION = '0.1.4.3'
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wire-framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4.2
4
+ version: 0.1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan T. Meyers
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: lmdb
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: nokogiri
71
85
  requirement: !ruby/object:Gem::Requirement