require_all 1.3.2 → 1.3.3
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.
- 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
|