jerakia 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jerakia.rb +6 -5
- data/lib/jerakia/cache.rb +14 -3
- data/lib/jerakia/cache/entry.rb +17 -0
- data/lib/jerakia/cache/file.rb +33 -0
- data/lib/jerakia/datasource.rb +1 -1
- data/lib/jerakia/datasource/file.rb +21 -12
- data/lib/jerakia/datasource/file/yaml.rb +7 -5
- data/lib/jerakia/log.rb +3 -3
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 733f3ff0ffece8cc45246f1e4e4657c6e7729618
|
4
|
+
data.tar.gz: 4a493d69a56e2cff5eea275fd38201ccfaab6261
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5d658a3e2ef290b4fd29ca1a0bb2571c1b604793234464b699562e4972f02d6b226006b1ec725c6b513983f96dc6017ec39792d9b1e0df382ae0fbd1d1e4792
|
7
|
+
data.tar.gz: 8415c0e24ef76f3250f430b7e3085395226ce4f2014a6cfa2e3ea1dac29926d223872ac9025fda3566aee6562716f5ec6a0e42ddf07c18b4cb68c109aeeb51e2
|
data/lib/jerakia.rb
CHANGED
@@ -17,7 +17,6 @@ class Jerakia
|
|
17
17
|
configfile = options[:config] || '/etc/jerakia/jerakia.yml'
|
18
18
|
@@config = Jerakia::Config.new(configfile)
|
19
19
|
@@filecache = {}
|
20
|
-
@@cache = Jerakia::Cache.new
|
21
20
|
loglevel = options[:loglevel] || @@config["loglevel"] || "info"
|
22
21
|
@@log = Jerakia::Log.new(loglevel.to_sym)
|
23
22
|
@@log.debug("Jerakia initialized")
|
@@ -42,10 +41,6 @@ class Jerakia
|
|
42
41
|
exit 1
|
43
42
|
end
|
44
43
|
|
45
|
-
def self.config
|
46
|
-
@@config
|
47
|
-
end
|
48
|
-
|
49
44
|
def self.filecache(name)
|
50
45
|
@@filecache[name] ||= File.read(name)
|
51
46
|
return @@filecache[name]
|
@@ -55,9 +50,15 @@ class Jerakia
|
|
55
50
|
@@filecache[name] = data
|
56
51
|
end
|
57
52
|
|
53
|
+
def self.config
|
54
|
+
@@config
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
58
|
def log
|
59
59
|
@@log
|
60
60
|
end
|
61
|
+
|
61
62
|
|
62
63
|
def self.log
|
63
64
|
@@log
|
data/lib/jerakia/cache.rb
CHANGED
@@ -4,12 +4,14 @@
|
|
4
4
|
#
|
5
5
|
class Jerakia::Cache
|
6
6
|
|
7
|
+
@@bucket = {}
|
8
|
+
|
7
9
|
def initialize
|
8
|
-
@@bucket = {}
|
9
10
|
end
|
10
11
|
|
11
|
-
def
|
12
|
-
@@bucket[index]
|
12
|
+
def add(index,data)
|
13
|
+
@@bucket[index] ||= {}
|
14
|
+
@@bucket[index][:content] = data
|
13
15
|
data
|
14
16
|
end
|
15
17
|
|
@@ -17,6 +19,15 @@ class Jerakia::Cache
|
|
17
19
|
@@bucket.has_key?(index)
|
18
20
|
end
|
19
21
|
|
22
|
+
## default behaviour is always validate if exists.
|
23
|
+
def valid?(index)
|
24
|
+
in_bucket?(index)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get(index)
|
28
|
+
@@bucket[index][:content]
|
29
|
+
end
|
30
|
+
|
20
31
|
def bucket
|
21
32
|
@@bucket
|
22
33
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'jerakia/cache'
|
2
|
+
|
3
|
+
class Jerakia::Cache::File < Jerakia::Cache
|
4
|
+
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
def state(filename)
|
12
|
+
if ::File.exists?(filename)
|
13
|
+
::File.stat(filename).mtime
|
14
|
+
else
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(index,data)
|
20
|
+
@@bucket[index] ||= {}
|
21
|
+
@@bucket[index][:state] = state(index)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def valid?(index)
|
26
|
+
if in_bucket?(index)
|
27
|
+
@@bucket[index][:state] == state(index)
|
28
|
+
else
|
29
|
+
false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/jerakia/datasource.rb
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
+
require 'jerakia/cache/file'
|
2
|
+
|
3
|
+
|
1
4
|
class Jerakia::Datasource
|
2
5
|
module File
|
3
6
|
|
4
7
|
attr_reader :file_format
|
8
|
+
@@cache = Jerakia::Cache::File.new
|
9
|
+
|
5
10
|
def load_format_handler
|
6
11
|
format = options[:format] || :yaml
|
7
12
|
class_name=format.to_s.capitalize
|
@@ -9,29 +14,33 @@ class Jerakia::Datasource
|
|
9
14
|
@file_format = eval "Jerakia::Datasource::File::#{class_name}"
|
10
15
|
end
|
11
16
|
|
17
|
+
|
18
|
+
def cache
|
19
|
+
@@cache
|
20
|
+
end
|
21
|
+
|
12
22
|
def read_from_file(fname)
|
13
23
|
fpath = []
|
14
24
|
fpath << options[:docroot] unless fname[0] == '/'
|
15
25
|
fpath << [ fname, lookup.request.namespace ]
|
16
|
-
diskname = ::File.join(fpath.flatten).gsub(/\/$/, '')
|
17
26
|
|
18
|
-
|
27
|
+
extension = options[:extension] || @file_format::EXTENSION
|
28
|
+
diskname = "#{::File.join(fpath.flatten).gsub(/\/$/, '')}.#{extension}"
|
29
|
+
|
19
30
|
|
20
|
-
|
21
|
-
import_args << diskname
|
22
|
-
import_args << options[:extension] if options[:extension]
|
31
|
+
Jerakia.log.debug("read_from_file() #{diskname}")
|
23
32
|
|
24
|
-
|
33
|
+
|
25
34
|
if options[:enable_caching]
|
26
|
-
if
|
27
|
-
Jerakia.log.debug("
|
28
|
-
|
35
|
+
if cache.valid?(diskname)
|
36
|
+
Jerakia.log.debug("Returning cached data")
|
37
|
+
cache.get(diskname)
|
29
38
|
else
|
30
|
-
Jerakia.log.debug("
|
31
|
-
|
39
|
+
Jerakia.log.debug("Adding contents of #{diskname} to cache")
|
40
|
+
cache.add(diskname,@file_format.import_file(diskname))
|
32
41
|
end
|
33
42
|
else
|
34
|
-
@file_format.import_file(
|
43
|
+
@file_format.import_file(diskname)
|
35
44
|
end
|
36
45
|
end
|
37
46
|
|
@@ -1,13 +1,15 @@
|
|
1
1
|
class Jerakia::Datasource
|
2
2
|
module File
|
3
3
|
class Yaml
|
4
|
+
|
5
|
+
EXTENSION='yaml'
|
6
|
+
|
4
7
|
class << self
|
5
8
|
require 'yaml'
|
6
|
-
def import_file(fname
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
data=::File.read(diskfile)
|
9
|
+
def import_file(fname)
|
10
|
+
Jerakia.log.debug("scanning file #{fname}")
|
11
|
+
return {} unless ::File.exists?(fname)
|
12
|
+
data=::File.read(fname)
|
11
13
|
YAML.load(data)
|
12
14
|
end
|
13
15
|
end
|
data/lib/jerakia/log.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jerakia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Dunn
|
@@ -22,6 +22,8 @@ files:
|
|
22
22
|
- lib/jerakia.rb
|
23
23
|
- lib/jerakia/answer.rb
|
24
24
|
- lib/jerakia/cache.rb
|
25
|
+
- lib/jerakia/cache/entry.rb
|
26
|
+
- lib/jerakia/cache/file.rb
|
25
27
|
- lib/jerakia/config.rb
|
26
28
|
- lib/jerakia/datamodel.rb
|
27
29
|
- lib/jerakia/datasource.rb
|