alki-loader 0.1.0 → 0.2.0

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 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