alki-loader 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35748f34edecf67d26bc0a7e3cf369c37a1316a6
4
- data.tar.gz: c76640c73518c34797723b12cf3dc2fc0918fde5
3
+ metadata.gz: 0d95a7f58e0d36040bbbdaba1c6cd4f141ae94b1
4
+ data.tar.gz: 4020be8a5dabf74746f7bcece2524c08c6cb8941
5
5
  SHA512:
6
- metadata.gz: 6d83c0157460cb42a860563d557a478476b3c6d3fa41001917cc9d8c7acdd529d6ea021affbacf0fdb4ea02ccd734e974016b697879f4eb3a827a4626f80b849
7
- data.tar.gz: a813aea0fa6d21cc84dfc8cdeb6cc4cab609a8cd59f59d57adbf269b060879d06731334344993c24d8f51cac02a80fd1dffe1e99f711e229757863908b3ba6b8
6
+ metadata.gz: b7b04006b3eb1a8c350ca91f07e4ae53b0e9d8a1d77b842da8f50837d20e07827e76b4542ecd2a9491b3adb2307b46963ac1f12366d58c5e18be44d135388fe8
7
+ data.tar.gz: 69a63aac6a6047381fa7d8c3b8720accd8051d2eacd99d8060d3b6b8197402f693a8906d74a9576901fe5ea183c8c57fe79d36c4453ea403acb05b26c36bba91
@@ -1,16 +1,19 @@
1
+ require 'thread'
2
+
1
3
  module Alki
2
4
  module Loader
3
5
  class Registry
4
6
  def initialize
7
+ @lock = Monitor.new
5
8
  clear
6
9
  end
7
10
 
8
11
  def clear
9
- @paths = []
10
- @paths_sorted = true
11
- @names = []
12
- @names_sorted = true
13
- @configs_loaded = false
12
+ @lock.synchronize do
13
+ @paths = []
14
+ @names = []
15
+ @configs_loaded = false
16
+ end
14
17
  end
15
18
 
16
19
  def paths
@@ -19,20 +22,20 @@ module Alki
19
22
  end
20
23
 
21
24
  def add(entry)
22
- @paths.delete_if{|e| e.path == entry.path }
23
- @paths << entry
24
- if entry.name
25
- @names.delete_if{|e| e.path == entry.path }
26
- @names << entry
25
+ @lock.synchronize do
26
+ @paths.delete_if{|e| e.path == entry.path }
27
+ @paths << entry
28
+ @names.sort!{|a,b| b.path <=> a.path}
29
+ if entry.name
30
+ @names.delete_if{|e| e.path == entry.path }
31
+ @names << entry
32
+ @names.sort!{|a,b| b.name <=> a.name}
33
+ end
27
34
  end
28
35
  end
29
36
 
30
37
  def lookup_name(name)
31
38
  load_configs!
32
- unless @names_sorted
33
- @names.sort! {|a,b| b.name <=> a.name }
34
- @names_sorted = true
35
- end
36
39
  @names.find do |e|
37
40
  name.start_with?(e.name) &&
38
41
  (name.size == e.name.size || name[e.name.size] == '/')
@@ -41,10 +44,6 @@ module Alki
41
44
 
42
45
  def lookup_path(path)
43
46
  load_configs!
44
- unless @paths_sorted
45
- @paths.sort! {|a,b| b.path <=> a.path }
46
- @paths_sorted = true
47
- end
48
47
  @paths.find do |e|
49
48
  path.start_with?(e.path) &&
50
49
  (path.size == e.path.size || path[e.path.size] == '/')
@@ -52,11 +51,13 @@ module Alki
52
51
  end
53
52
 
54
53
  def load_configs!
55
- path_hash = $LOAD_PATH.hash
56
- return if @configs_loaded == path_hash
57
- @configs_loaded = path_hash
58
- Gem.find_files_from_load_path('alki_loader.rb').each do |config_path|
59
- require config_path
54
+ @lock.synchronize do
55
+ path_hash = $LOAD_PATH.hash
56
+ return if @configs_loaded == path_hash
57
+ @configs_loaded = path_hash
58
+ Gem.find_files_from_load_path('alki_loader.rb').each do |config_path|
59
+ require config_path
60
+ end
60
61
  end
61
62
  end
62
63
  end
@@ -1,5 +1,5 @@
1
1
  module Alki
2
2
  module Loader
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alki-loader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Edlefsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-29 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler