load_path_find 0.0.4 → 0.0.5
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/README.rdoc +13 -1
- data/VERSION +1 -1
- data/lib/load_path_find.rb +17 -3
- data/spec/data/dir1/test2.rb +2 -0
- data/spec/data/dir2/test2.rb +1 -0
- data/spec/load_path_find_spec.rb +7 -2
- metadata +24 -9
data/README.rdoc
CHANGED
@@ -26,4 +26,16 @@ And now, even more awesome!
|
|
26
26
|
|
27
27
|
.. adds the current path to the start of the <tt>$LOAD_PATH</tt>
|
28
28
|
|
29
|
-
And one more clever trick, <tt>Kernel#require_all</tt>, lets you require all matching files.
|
29
|
+
And one more clever trick, <tt>Kernel#require_all</tt>, lets you require all matching files.
|
30
|
+
|
31
|
+
Also, there is <tt>Kernel#require_next</tt> which can be used to monkey patch on require:
|
32
|
+
|
33
|
+
# my_extension/stringio.rb
|
34
|
+
require_next "stringio"
|
35
|
+
StringIO.class_eval do
|
36
|
+
# insert evil stuff here
|
37
|
+
end
|
38
|
+
|
39
|
+
# my_extension/setup.rb
|
40
|
+
$LOAD_PATH.add_current!
|
41
|
+
require "some_code_not_owned_by_me_maybe_requiring_stringio_oh_how_will_i_fool_them_all"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/lib/load_path_find.rb
CHANGED
@@ -6,9 +6,10 @@ $LOAD_PATH.instance_eval do
|
|
6
6
|
nil
|
7
7
|
end
|
8
8
|
|
9
|
-
def find_all_files(file)
|
9
|
+
def find_all_files(file, ext = nil)
|
10
|
+
file += ext if ext and File.extname(file) != ext
|
10
11
|
inject([]){|ary, path|
|
11
|
-
target = File.
|
12
|
+
target = File.expand_path(file, path)
|
12
13
|
if File.readable?(target)
|
13
14
|
ary << target
|
14
15
|
yield target if block_given?
|
@@ -29,6 +30,19 @@ end
|
|
29
30
|
|
30
31
|
module Kernel
|
31
32
|
def require_all(req)
|
32
|
-
$LOAD_PATH.find_all_files(
|
33
|
+
$LOAD_PATH.find_all_files(req, ".rb") { |file| require file }
|
34
|
+
end
|
35
|
+
|
36
|
+
def require_next(req)
|
37
|
+
found, current = false, File.expand_path(caller.first[/^[^:]+/])
|
38
|
+
$LOAD_PATH.find_all_files(req, ".rb") do |file|
|
39
|
+
if found
|
40
|
+
$LOADED_FEATURES << req
|
41
|
+
return require(file)
|
42
|
+
else
|
43
|
+
found = current == file
|
44
|
+
end
|
45
|
+
end
|
46
|
+
require req
|
33
47
|
end
|
34
48
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
$test2 = 2 if $test2 == 1
|
data/spec/load_path_find_spec.rb
CHANGED
@@ -10,8 +10,8 @@ describe 'load path find' do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should find a directory on the load path" do
|
13
|
-
target =
|
14
|
-
$:.find_file(
|
13
|
+
target = "data/dir1"
|
14
|
+
$:.find_file("../dir1")[-target.size, target.size].should == target
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should find the first file when its ambigious" do
|
@@ -53,5 +53,10 @@ describe 'load path find' do
|
|
53
53
|
$state1.should be_true
|
54
54
|
$state2.should be_true
|
55
55
|
end
|
56
|
+
|
57
|
+
it "should require_next" do
|
58
|
+
require 'test2'
|
59
|
+
$test2.should == 2
|
60
|
+
end
|
56
61
|
|
57
62
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: load_path_find
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Joshua Hull
|
@@ -9,19 +14,23 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-04-05 00:00:00 -04:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: dirge
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 0
|
30
|
+
- 3
|
23
31
|
version: 0.0.3
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
description: Convenient way to find stuff on the load path.
|
26
35
|
email: joshbuddy@gmail.com
|
27
36
|
executables: []
|
@@ -37,8 +46,10 @@ files:
|
|
37
46
|
- lib/load_path_find.rb
|
38
47
|
- spec/data/dir1/file1
|
39
48
|
- spec/data/dir1/test.rb
|
49
|
+
- spec/data/dir1/test2.rb
|
40
50
|
- spec/data/dir2/file1
|
41
51
|
- spec/data/dir2/test.rb
|
52
|
+
- spec/data/dir2/test2.rb
|
42
53
|
- spec/load_path_find_spec.rb
|
43
54
|
- spec/spec.opts
|
44
55
|
has_rdoc: true
|
@@ -54,22 +65,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
54
65
|
requirements:
|
55
66
|
- - ">="
|
56
67
|
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 0
|
57
70
|
version: "0"
|
58
|
-
version:
|
59
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
72
|
requirements:
|
61
73
|
- - ">="
|
62
74
|
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
63
77
|
version: "0"
|
64
|
-
version:
|
65
78
|
requirements: []
|
66
79
|
|
67
80
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.3.
|
81
|
+
rubygems_version: 1.3.6
|
69
82
|
signing_key:
|
70
83
|
specification_version: 3
|
71
84
|
summary: Convenient way to find stuff on the load path.
|
72
85
|
test_files:
|
73
86
|
- spec/data/dir1/test.rb
|
87
|
+
- spec/data/dir1/test2.rb
|
74
88
|
- spec/data/dir2/test.rb
|
89
|
+
- spec/data/dir2/test2.rb
|
75
90
|
- spec/load_path_find_spec.rb
|