jerakia 0.0.8 → 0.0.9
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.
- 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
|