nucleon 0.2.9 → 0.2.10
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/VERSION +1 -1
- data/lib/core/plugin/action.rb +15 -2
- data/lib/core/util/cache.rb +51 -53
- data/lib/nucleon_base.rb +4 -0
- data/nucleon.gemspec +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2a05325532059ef176a3aa70f8b9cd37379821b
|
4
|
+
data.tar.gz: 00042b162c3c7793f8b1f631a96eddbd516322d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3e768ca2276d0e30090b0a8f92aaea30943a47d009139bc8e90de6df58b7355151c72600515c01a14533c8b960476d69306731a3e0428ad962b81ba7d0c483d
|
7
|
+
data.tar.gz: b1887ddeaa81bd46acdf6bb5dc7b1bdac3ce0dce2d9520884c1f83637427ab93d1640925198764ea0f5f0547ddcbc6e6cfa7f72ab640d327c4d1eacd8b6c9cfe
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.10
|
data/lib/core/plugin/action.rb
CHANGED
@@ -580,13 +580,26 @@ class Action < Nucleon.plugin_class(:nucleon, :base)
|
|
580
580
|
|
581
581
|
search_action = lambda do |components|
|
582
582
|
unless components.empty?
|
583
|
+
index = action_index
|
583
584
|
action_id = components.is_a?(Array) ? components.flatten.join('::') : components
|
584
585
|
action_id_pattern = action_id.gsub('::', ':.*:')
|
585
586
|
|
586
|
-
|
587
|
-
|
587
|
+
# Check for exact matches
|
588
|
+
index.each do |loaded_action_id, loaded_action_info|
|
589
|
+
if loaded_action_id.match(/^[^\:]+\:\:#{action_id.gsub(/\-/, '\-')}$/)
|
588
590
|
loaded_action_info[:action_id] = loaded_action_id
|
589
591
|
actions_found << loaded_action_info
|
592
|
+
break
|
593
|
+
end
|
594
|
+
end
|
595
|
+
|
596
|
+
if actions_found.empty?
|
597
|
+
# Check for similarly named actions
|
598
|
+
index.each do |loaded_action_id, loaded_action_info|
|
599
|
+
if loaded_action_id.match(/(^|\:)#{action_id_pattern.gsub(/\-/, '\-')}(\:|$)/)
|
600
|
+
loaded_action_info[:action_id] = loaded_action_id
|
601
|
+
actions_found << loaded_action_info
|
602
|
+
end
|
590
603
|
end
|
591
604
|
end
|
592
605
|
end
|
data/lib/core/util/cache.rb
CHANGED
@@ -2,74 +2,74 @@
|
|
2
2
|
module Nucleon
|
3
3
|
module Util
|
4
4
|
class Cache < Core
|
5
|
-
|
5
|
+
|
6
6
|
@@cache_lock = Mutex.new
|
7
|
-
|
7
|
+
|
8
8
|
#-----------------------------------------------------------------------------
|
9
|
-
|
9
|
+
|
10
10
|
# This class already inherits much of what we need from the core config class.
|
11
11
|
# Right now we just have to worry about persistence
|
12
|
-
|
12
|
+
|
13
13
|
#-----------------------------------------------------------------------------
|
14
14
|
# Constructor / Destructor
|
15
|
-
|
15
|
+
|
16
16
|
def initialize(root_path, id, cache_dir = '.cache', force = true)
|
17
17
|
super({}, {}, force)
|
18
|
-
|
19
|
-
@cache_dir = cache_dir
|
20
|
-
@cache_root = File.join(root_path, cache_dir)
|
18
|
+
|
19
|
+
@cache_dir = cache_dir
|
20
|
+
@cache_root = File.join(root_path, cache_dir)
|
21
21
|
FileUtils.mkdir_p(base_path) unless File.directory?(base_path)
|
22
|
-
|
22
|
+
|
23
23
|
@cache_id = id.to_sym
|
24
24
|
@cache_translator = Nucleon.type_default(:nucleon, :translator)
|
25
25
|
@cache_filename = "#{id}.#{translator}"
|
26
26
|
@cache_path = File.join(@cache_root, @cache_filename)
|
27
|
-
|
27
|
+
|
28
28
|
load
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
#-----------------------------------------------------------------------------
|
32
32
|
# Property accessors / modifiers
|
33
|
-
|
33
|
+
|
34
34
|
def status
|
35
35
|
@status
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
#---
|
39
|
-
|
39
|
+
|
40
40
|
def base_path
|
41
41
|
@cache_root
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
#---
|
45
|
-
|
45
|
+
|
46
46
|
def directory_name
|
47
47
|
@cache_dir
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
#---
|
51
|
-
|
51
|
+
|
52
52
|
def id
|
53
53
|
@cache_id
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
#---
|
57
|
-
|
57
|
+
|
58
58
|
def translator
|
59
59
|
@cache_translator
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
#---
|
63
|
-
|
63
|
+
|
64
64
|
def file
|
65
65
|
@cache_path
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
#---
|
69
|
-
|
69
|
+
|
70
70
|
def get(keys, default = nil, format = false)
|
71
71
|
result = super(keys, nil)
|
72
|
-
|
72
|
+
|
73
73
|
if result.nil?
|
74
74
|
load
|
75
75
|
result = super(keys, nil)
|
@@ -79,88 +79,86 @@ class Cache < Core
|
|
79
79
|
end
|
80
80
|
|
81
81
|
#---
|
82
|
-
|
82
|
+
|
83
83
|
def set(keys, value, delete_nil = false)
|
84
84
|
result = super
|
85
85
|
save if initialized?
|
86
86
|
result
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
#---
|
90
|
-
|
90
|
+
|
91
91
|
def delete(keys, default = nil)
|
92
92
|
result = super
|
93
93
|
save if initialized?
|
94
94
|
result
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
#---
|
98
|
-
|
98
|
+
|
99
99
|
def clear
|
100
100
|
result = super
|
101
101
|
save if initialized?
|
102
102
|
result
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
#-----------------------------------------------------------------------------
|
106
106
|
# Operations
|
107
|
-
|
107
|
+
|
108
108
|
def import_base(properties, options = {})
|
109
109
|
config = Config.ensure(options)
|
110
|
-
|
110
|
+
|
111
111
|
result = super
|
112
112
|
save if initialized? && ! config.get(:no_save, false)
|
113
113
|
result
|
114
114
|
end
|
115
|
-
|
115
|
+
|
116
116
|
#---
|
117
|
-
|
117
|
+
|
118
118
|
def load
|
119
119
|
success = false
|
120
120
|
@status = 255
|
121
|
-
|
122
|
-
@@cache_lock.synchronize do
|
121
|
+
|
122
|
+
@@cache_lock.synchronize do
|
123
123
|
logger.info("Loading #{translator} translated cache from #{file}")
|
124
|
-
|
124
|
+
|
125
125
|
parser = CORL.translator({}, translator)
|
126
|
-
raw = Disk.read(file)
|
127
|
-
|
126
|
+
raw = Disk.read(file)
|
127
|
+
|
128
128
|
if parser && raw && ! raw.empty?
|
129
|
-
logger.debug("Cache file contents: #{raw}")
|
129
|
+
logger.debug("Cache file contents: #{raw}")
|
130
130
|
parse_properties = Data.hash(parser.parse(raw))
|
131
|
-
|
131
|
+
|
132
132
|
Nucleon.remove_plugin(parser)
|
133
|
-
|
133
|
+
|
134
134
|
import(parse_properties, { :no_save => true }) unless parse_properties.empty?
|
135
135
|
success = true
|
136
136
|
@status = Nucleon.code.success
|
137
137
|
end
|
138
|
-
end
|
139
|
-
success
|
138
|
+
end
|
139
|
+
success
|
140
140
|
end
|
141
|
-
|
142
|
-
|
141
|
+
|
143
142
|
#---
|
144
|
-
|
143
|
+
|
145
144
|
def save
|
146
145
|
success = false
|
147
146
|
@status = 255
|
148
|
-
|
147
|
+
|
149
148
|
@@cache_lock.synchronize do
|
150
149
|
if renderer = CORL.translator({}, translator)
|
151
150
|
rendering = renderer.generate(export)
|
152
|
-
|
151
|
+
|
153
152
|
Nucleon.remove_plugin(renderer)
|
154
|
-
|
153
|
+
|
155
154
|
if Disk.write(file, rendering)
|
156
155
|
success = true
|
157
156
|
@status = Nucleon.code.success
|
158
157
|
end
|
159
158
|
end
|
160
159
|
end
|
161
|
-
success
|
160
|
+
success
|
162
161
|
end
|
163
|
-
protected :save
|
164
162
|
end
|
165
163
|
end
|
166
164
|
end
|
data/lib/nucleon_base.rb
CHANGED
data/nucleon.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: nucleon 0.2.
|
5
|
+
# stub: nucleon 0.2.10 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "nucleon"
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.10"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Adrian Webb"]
|
14
|
-
s.date = "2015-02-
|
14
|
+
s.date = "2015-02-26"
|
15
15
|
s.description = "\nA framework that provides a simple foundation for building Ruby applications that are:\n\n* Highly configurable (with both distributed and persistent configurations)\n* Extremely pluggable and extendable\n* Easily parallel\n\nNote: This framework is still very early in development!\n"
|
16
16
|
s.email = "adrian.webb@coralnexus.com"
|
17
17
|
s.executables = ["nucleon"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nucleon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Webb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: log4r
|