magicloader 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/magic_loader.rb +5 -0
- data/lib/magic_loader/tasks.rb +1 -1
- data/magicloader.gemspec +1 -1
- data/spec/fixtures/circular/y.rb +3 -0
- data/spec/fixtures/circular/z.rb +3 -0
- data/spec/magic_loader_spec.rb +8 -0
- data/spec/tmp/example.rb +0 -1
- metadata +6 -4
data/lib/magic_loader.rb
CHANGED
@@ -92,10 +92,15 @@ module MagicLoader
|
|
92
92
|
# previously caused NameErrors until they've all been loaded or no new
|
93
93
|
# files can be loaded, indicating unresolvable dependencies.
|
94
94
|
files.each do |file|
|
95
|
+
original_constants = Module.constants
|
96
|
+
|
95
97
|
begin
|
96
98
|
require file
|
97
99
|
load_order << file
|
98
100
|
rescue NameError => ex
|
101
|
+
new_constants = Module.constants - original_constants
|
102
|
+
new_constants.each { |name| Object.send(:remove_const, name) }
|
103
|
+
|
99
104
|
failed << file
|
100
105
|
first_name_error ||= ex
|
101
106
|
end
|
data/lib/magic_loader/tasks.rb
CHANGED
data/magicloader.gemspec
CHANGED
@@ -7,7 +7,7 @@ GEMSPEC = Gem::Specification.new do |s|
|
|
7
7
|
Painless code dependency management. Think Bundler, but for managing file load
|
8
8
|
ordering dependencies.
|
9
9
|
EOD
|
10
|
-
s.version = "0.9.
|
10
|
+
s.version = "0.9.2"
|
11
11
|
s.authors = "Tony Arcieri"
|
12
12
|
s.email = "bascule@gmail.com"
|
13
13
|
s.homepage = "http://github.com/tarcieri/MagicLoader"
|
data/spec/magic_loader_spec.rb
CHANGED
@@ -17,6 +17,14 @@ describe MagicLoader do
|
|
17
17
|
MagicLoader.require_all File.expand_path('../fixtures/unresolvable/*.rb', __FILE__)
|
18
18
|
end.should raise_error(NameError)
|
19
19
|
end
|
20
|
+
|
21
|
+
it "cleans up after constants if dependencies can't be resolved" do
|
22
|
+
proc do
|
23
|
+
MagicLoader.require_all File.expand_path('../fixtures/circular/*.rb', __FILE__)
|
24
|
+
end.should raise_error(NameError)
|
25
|
+
|
26
|
+
defined?(Outer).should be_false
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
describe "syntactic sugar" do
|
data/spec/tmp/example.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magicloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 63
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 2
|
10
|
+
version: 0.9.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Arcieri
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-10-25 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -32,6 +32,8 @@ extra_rdoc_files:
|
|
32
32
|
files:
|
33
33
|
- lib/magic_loader/tasks.rb
|
34
34
|
- lib/magic_loader.rb
|
35
|
+
- spec/fixtures/circular/y.rb
|
36
|
+
- spec/fixtures/circular/z.rb
|
35
37
|
- spec/fixtures/resolvable/a.rb
|
36
38
|
- spec/fixtures/resolvable/b.rb
|
37
39
|
- spec/fixtures/resolvable/c.rb
|