require_all 1.3.2 → 1.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -3
- data/CHANGES +4 -0
- data/Rakefile +6 -7
- data/lib/require_all.rb +276 -277
- data/require_all.gemspec +22 -22
- data/spec/autoload_shared.rb +84 -74
- data/spec/autoload_spec.rb +65 -65
- data/spec/load_spec.rb +60 -56
- data/spec/require_shared.rb +78 -68
- data/spec/require_spec.rb +45 -45
- metadata +25 -11
- checksums.yaml +0 -7
data/require_all.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
Gem::Specification.new do |s|
|
2
|
-
s.name = "require_all"
|
3
|
-
s.version = "1.3.
|
4
|
-
s.authors = ["Jarmo Pertman", "Tony Arcieri"]
|
5
|
-
s.email = "jarmo.p@gmail.com"
|
6
|
-
s.summary = "A wonderfully simple way to load your code"
|
7
|
-
|
8
|
-
s.files = `git ls-files`.split($\)
|
9
|
-
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
10
|
-
s.require_paths = ["lib"]
|
11
|
-
|
12
|
-
s.homepage = "http://github.com/jarmo/require_all"
|
13
|
-
s.license = "MIT"
|
14
|
-
|
15
|
-
s.has_rdoc = true
|
16
|
-
s.rdoc_options = %w(--title require_all --main README.md --line-numbers)
|
17
|
-
s.extra_rdoc_files = ["LICENSE", "README.md", "CHANGES"]
|
18
|
-
|
19
|
-
s.add_development_dependency "rake", "~>
|
20
|
-
s.add_development_dependency "rspec", "~>2
|
21
|
-
s.add_development_dependency "simplecov", "~>0.7"
|
22
|
-
end
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "require_all"
|
3
|
+
s.version = "1.3.3"
|
4
|
+
s.authors = ["Jarmo Pertman", "Tony Arcieri"]
|
5
|
+
s.email = "jarmo.p@gmail.com"
|
6
|
+
s.summary = "A wonderfully simple way to load your code"
|
7
|
+
|
8
|
+
s.files = `git ls-files`.split($\)
|
9
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
10
|
+
s.require_paths = ["lib"]
|
11
|
+
|
12
|
+
s.homepage = "http://github.com/jarmo/require_all"
|
13
|
+
s.license = "MIT"
|
14
|
+
|
15
|
+
s.has_rdoc = true
|
16
|
+
s.rdoc_options = %w(--title require_all --main README.md --line-numbers)
|
17
|
+
s.extra_rdoc_files = ["LICENSE", "README.md", "CHANGES"]
|
18
|
+
|
19
|
+
s.add_development_dependency "rake", "~> 10.4"
|
20
|
+
s.add_development_dependency "rspec", "~> 3.2"
|
21
|
+
s.add_development_dependency "simplecov", "~> 0.7"
|
22
|
+
end
|
data/spec/autoload_shared.rb
CHANGED
@@ -1,74 +1,84 @@
|
|
1
|
-
shared_examples_for "#autoload_all syntactic sugar" do
|
2
|
-
before :each do
|
3
|
-
@file_list = [
|
4
|
-
"#{@base_dir}/module1/a.rb",
|
5
|
-
"#{@base_dir}/module2/longer_name.rb",
|
6
|
-
"#{@base_dir}/module2/module3/b.rb"
|
7
|
-
]
|
8
|
-
end
|
9
|
-
|
10
|
-
it "accepts files with and without extensions" do
|
11
|
-
|
12
|
-
send(@method, @base_dir + '/module2/longer_name', :base_dir => @autoload_base_dir).
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
send(@method, @base_dir + '/module1/a.rb', :base_dir => @autoload_base_dir).
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
it "accepts lists of files" do
|
21
|
-
|
22
|
-
"Autoloaded::Module2::Module3::B")
|
23
|
-
send(@method, @file_list, :base_dir => @autoload_base_dir).
|
24
|
-
|
25
|
-
"Autoloaded::Module2::Module3::B")
|
26
|
-
end
|
27
|
-
|
28
|
-
it "is totally cool with a splatted list of arguments" do
|
29
|
-
|
30
|
-
"Autoloaded::Module2::Module3::B")
|
31
|
-
send(@method, *(@file_list << {:base_dir => @autoload_base_dir})).
|
32
|
-
|
33
|
-
"Autoloaded::Module2::Module3::B")
|
34
|
-
end
|
35
|
-
|
36
|
-
it "will load all .rb files under a directory without a trailing slash" do
|
37
|
-
|
38
|
-
"Autoloaded::Module2::Module3::B")
|
39
|
-
send(@method, @base_dir, :base_dir => @autoload_base_dir).
|
40
|
-
|
41
|
-
"Autoloaded::Module2::Module3::B")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "will load all .rb files under a directory with a trailing slash" do
|
45
|
-
|
46
|
-
"Autoloaded::Module2::Module3::B")
|
47
|
-
send(@method, "#{@base_dir}/", :base_dir => @autoload_base_dir).
|
48
|
-
|
49
|
-
"Autoloaded::Module2::Module3::B")
|
50
|
-
end
|
51
|
-
|
52
|
-
it "will load all files specified by a glob" do
|
53
|
-
|
54
|
-
"Autoloaded::Module2::Module3::B")
|
55
|
-
send(@method, "#{@base_dir}/**/*.rb", :base_dir => @autoload_base_dir).
|
56
|
-
|
57
|
-
"Autoloaded::Module2::Module3::B")
|
58
|
-
end
|
59
|
-
|
60
|
-
it "returns false if an empty input was given" do
|
61
|
-
send(@method, [])
|
62
|
-
send(@method, []).
|
63
|
-
send(@method).
|
64
|
-
end
|
65
|
-
|
66
|
-
it "raises LoadError if no file or directory found" do
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
it "
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
1
|
+
shared_examples_for "#autoload_all syntactic sugar" do
|
2
|
+
before :each do
|
3
|
+
@file_list = [
|
4
|
+
"#{@base_dir}/module1/a.rb",
|
5
|
+
"#{@base_dir}/module2/longer_name.rb",
|
6
|
+
"#{@base_dir}/module2/module3/b.rb"
|
7
|
+
]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "accepts files with and without extensions" do
|
11
|
+
is_expected.not_to be_loaded("Autoloaded::Module2::LongerName")
|
12
|
+
expect(send(@method, @base_dir + '/module2/longer_name', :base_dir => @autoload_base_dir)).to be_truthy
|
13
|
+
is_expected.to be_loaded("Autoloaded::Module2::LongerName")
|
14
|
+
|
15
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A")
|
16
|
+
expect(send(@method, @base_dir + '/module1/a.rb', :base_dir => @autoload_base_dir)).to be_truthy
|
17
|
+
is_expected.to be_loaded("Autoloaded::Module1::A")
|
18
|
+
end
|
19
|
+
|
20
|
+
it "accepts lists of files" do
|
21
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
22
|
+
"Autoloaded::Module2::Module3::B")
|
23
|
+
expect(send(@method, @file_list, :base_dir => @autoload_base_dir)).to be_truthy
|
24
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
25
|
+
"Autoloaded::Module2::Module3::B")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "is totally cool with a splatted list of arguments" do
|
29
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
30
|
+
"Autoloaded::Module2::Module3::B")
|
31
|
+
expect(send(@method, *(@file_list << {:base_dir => @autoload_base_dir}))).to be_truthy
|
32
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
33
|
+
"Autoloaded::Module2::Module3::B")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "will load all .rb files under a directory without a trailing slash" do
|
37
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
38
|
+
"Autoloaded::Module2::Module3::B")
|
39
|
+
expect(send(@method, @base_dir, :base_dir => @autoload_base_dir)).to be_truthy
|
40
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
41
|
+
"Autoloaded::Module2::Module3::B")
|
42
|
+
end
|
43
|
+
|
44
|
+
it "will load all .rb files under a directory with a trailing slash" do
|
45
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
46
|
+
"Autoloaded::Module2::Module3::B")
|
47
|
+
expect(send(@method, "#{@base_dir}/", :base_dir => @autoload_base_dir)).to be_truthy
|
48
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
49
|
+
"Autoloaded::Module2::Module3::B")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "will load all files specified by a glob" do
|
53
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
54
|
+
"Autoloaded::Module2::Module3::B")
|
55
|
+
expect(send(@method, "#{@base_dir}/**/*.rb", :base_dir => @autoload_base_dir)).to be_truthy
|
56
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName",
|
57
|
+
"Autoloaded::Module2::Module3::B")
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns false if an empty input was given" do
|
61
|
+
send(@method, [])
|
62
|
+
expect(send(@method, [])).to be_falsey
|
63
|
+
expect(send(@method)).to be_falsey
|
64
|
+
end
|
65
|
+
|
66
|
+
it "raises LoadError if no file or directory found" do
|
67
|
+
expect {send(@method, "not_found")}.to raise_error(LoadError)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "can handle empty directories" do
|
71
|
+
# Have to make these on the fly because they can't be saved as a test fixture because Git won't track directories with nothing in them.
|
72
|
+
FileUtils.mkpath("#{@base_dir}/empty_dir")
|
73
|
+
FileUtils.mkpath("#{@base_dir}/nested/empty_dir")
|
74
|
+
FileUtils.mkpath("#{@base_dir}/nested/more_nested/empty_dir")
|
75
|
+
|
76
|
+
expect {send(@method, "#{@base_dir}/empty_dir")}.to_not raise_error
|
77
|
+
expect {send(@method, "#{@base_dir}/nested")}.to_not raise_error
|
78
|
+
end
|
79
|
+
|
80
|
+
it "raises LoadError if :base_dir doesn't exist" do
|
81
|
+
expect {send(@method, @base_dir, :base_dir => @base_dir + "/non_existing_dir")}.
|
82
|
+
to raise_exception(LoadError)
|
83
|
+
end
|
84
|
+
end
|
data/spec/autoload_spec.rb
CHANGED
@@ -1,65 +1,65 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
require File.dirname(__FILE__) + '/autoload_shared.rb'
|
3
|
-
|
4
|
-
describe "autoload_all" do
|
5
|
-
|
6
|
-
subject { self }
|
7
|
-
|
8
|
-
it "provides require_all functionality by using 'autoload' instead of 'require'" do
|
9
|
-
|
10
|
-
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded"
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
it "doesn't autoload files with wrong module names" do
|
15
|
-
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded"
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
it "needs to specify base_dir for autoloading if loading something from under top-level module directory" do
|
20
|
-
|
21
|
-
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded/module1"
|
22
|
-
|
23
|
-
|
24
|
-
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded/module1",
|
25
|
-
:base_dir => File.dirname(__FILE__) + "/fixtures/autoloaded"
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
before(:all) do
|
31
|
-
@base_dir = File.dirname(__FILE__) + '/fixtures/autoloaded'
|
32
|
-
@method = :autoload_all
|
33
|
-
@autoload_base_dir = @base_dir
|
34
|
-
end
|
35
|
-
it_should_behave_like "#autoload_all syntactic sugar"
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "autoload_rel" do
|
39
|
-
|
40
|
-
subject { self }
|
41
|
-
|
42
|
-
it "provides autoload_all functionality relative to the current file" do
|
43
|
-
|
44
|
-
require File.dirname(__FILE__) + '/fixtures/autoloaded_rel/modules/zero'
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
it "needs to specify base_dir for autoloading if loading something from under top-level module directory" do
|
49
|
-
|
50
|
-
autoload_rel "./fixtures/autoloaded/module1"
|
51
|
-
|
52
|
-
|
53
|
-
autoload_rel "./fixtures/autoloaded/module1",
|
54
|
-
:base_dir => File.dirname(__FILE__) + "/fixtures/autoloaded"
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
before(:all) do
|
60
|
-
@base_dir = './fixtures/autoloaded'
|
61
|
-
@method = :autoload_rel
|
62
|
-
@autoload_base_dir = File.dirname(__FILE__) + "/fixtures/autoloaded"
|
63
|
-
end
|
64
|
-
it_should_behave_like "#autoload_all syntactic sugar"
|
65
|
-
end
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
require File.dirname(__FILE__) + '/autoload_shared.rb'
|
3
|
+
|
4
|
+
describe "autoload_all" do
|
5
|
+
|
6
|
+
subject { self }
|
7
|
+
|
8
|
+
it "provides require_all functionality by using 'autoload' instead of 'require'" do
|
9
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
10
|
+
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded"
|
11
|
+
is_expected.to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "doesn't autoload files with wrong module names" do
|
15
|
+
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded"
|
16
|
+
is_expected.not_to be_loaded("Autoloaded::WrongModule::WithWrongModule", "WrongModule::WithWrongModule")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "needs to specify base_dir for autoloading if loading something from under top-level module directory" do
|
20
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
21
|
+
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded/module1"
|
22
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
23
|
+
|
24
|
+
autoload_all File.dirname(__FILE__) + "/fixtures/autoloaded/module1",
|
25
|
+
:base_dir => File.dirname(__FILE__) + "/fixtures/autoloaded"
|
26
|
+
is_expected.to be_loaded("Autoloaded::Module1::A")
|
27
|
+
is_expected.not_to be_loaded("Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
28
|
+
end
|
29
|
+
|
30
|
+
before(:all) do
|
31
|
+
@base_dir = File.dirname(__FILE__) + '/fixtures/autoloaded'
|
32
|
+
@method = :autoload_all
|
33
|
+
@autoload_base_dir = @base_dir
|
34
|
+
end
|
35
|
+
it_should_behave_like "#autoload_all syntactic sugar"
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "autoload_rel" do
|
39
|
+
|
40
|
+
subject { self }
|
41
|
+
|
42
|
+
it "provides autoload_all functionality relative to the current file" do
|
43
|
+
is_expected.not_to be_loaded("Modules::Module1::First", "Modules::Module2::Second", "Modules::Zero")
|
44
|
+
require File.dirname(__FILE__) + '/fixtures/autoloaded_rel/modules/zero'
|
45
|
+
is_expected.to be_loaded("Modules::Module1::First", "Modules::Module2::Second", "Modules::Zero")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "needs to specify base_dir for autoloading if loading something from under top-level module directory" do
|
49
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
50
|
+
autoload_rel "./fixtures/autoloaded/module1"
|
51
|
+
is_expected.not_to be_loaded("Autoloaded::Module1::A", "Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
52
|
+
|
53
|
+
autoload_rel "./fixtures/autoloaded/module1",
|
54
|
+
:base_dir => File.dirname(__FILE__) + "/fixtures/autoloaded"
|
55
|
+
is_expected.to be_loaded("Autoloaded::Module1::A")
|
56
|
+
is_expected.not_to be_loaded("Autoloaded::Module2::LongerName", "Autoloaded::Module2::Module3::B")
|
57
|
+
end
|
58
|
+
|
59
|
+
before(:all) do
|
60
|
+
@base_dir = './fixtures/autoloaded'
|
61
|
+
@method = :autoload_rel
|
62
|
+
@autoload_base_dir = File.dirname(__FILE__) + "/fixtures/autoloaded"
|
63
|
+
end
|
64
|
+
it_should_behave_like "#autoload_all syntactic sugar"
|
65
|
+
end
|
data/spec/load_spec.rb
CHANGED
@@ -1,56 +1,60 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
require File.dirname(__FILE__) + '/require_shared.rb'
|
3
|
-
|
4
|
-
describe "load_all" do
|
5
|
-
|
6
|
-
subject { self }
|
7
|
-
|
8
|
-
it "provides require_all functionality but using 'load' instead of 'require'" do
|
9
|
-
require_all File.dirname(__FILE__) + '/fixtures/resolvable'
|
10
|
-
C.new.
|
11
|
-
|
12
|
-
class C
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
RelativeD.new.
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
require File.dirname(__FILE__) + '/require_shared.rb'
|
3
|
+
|
4
|
+
describe "load_all" do
|
5
|
+
|
6
|
+
subject { self }
|
7
|
+
|
8
|
+
it "provides require_all functionality but using 'load' instead of 'require'" do
|
9
|
+
require_all File.dirname(__FILE__) + '/fixtures/resolvable'
|
10
|
+
expect(C.new).to be_cool
|
11
|
+
|
12
|
+
class C
|
13
|
+
remove_method :cool?
|
14
|
+
def cool?
|
15
|
+
false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
expect(C.new).not_to be_cool
|
19
|
+
C.send :remove_method, :cool?
|
20
|
+
|
21
|
+
load_all File.dirname(__FILE__) + '/fixtures/resolvable'
|
22
|
+
expect(C.new).to be_cool
|
23
|
+
end
|
24
|
+
|
25
|
+
before(:all) do
|
26
|
+
@base_dir = File.dirname(__FILE__) + '/fixtures/autoloaded'
|
27
|
+
@method = :load_all
|
28
|
+
end
|
29
|
+
it_should_behave_like "#require_all syntactic sugar"
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "load_rel" do
|
33
|
+
|
34
|
+
subject { self }
|
35
|
+
|
36
|
+
it "provides load_all functionality relative to the current file" do
|
37
|
+
require File.dirname(__FILE__) + '/fixtures/relative/d/d'
|
38
|
+
|
39
|
+
is_expected.to be_loaded("RelativeA", "RelativeC", "RelativeD")
|
40
|
+
expect(RelativeD.new).to be_ok
|
41
|
+
|
42
|
+
class RelativeD
|
43
|
+
remove_method :ok?
|
44
|
+
def ok?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
expect(RelativeD.new).not_to be_ok
|
49
|
+
RelativeD.send :remove_method, :ok?
|
50
|
+
|
51
|
+
load File.dirname(__FILE__) + '/fixtures/relative/d/d.rb'
|
52
|
+
expect(RelativeD.new).to be_ok
|
53
|
+
end
|
54
|
+
|
55
|
+
before(:all) do
|
56
|
+
@base_dir = './fixtures/autoloaded'
|
57
|
+
@method = :load_rel
|
58
|
+
end
|
59
|
+
it_should_behave_like "#require_all syntactic sugar"
|
60
|
+
end
|