pathological 0.2.2 → 0.2.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/Gemfile.lock +1 -5
- data/lib/pathological/base.rb +14 -2
- data/lib/pathological/version.rb +1 -1
- data/pathological.gemspec +0 -2
- data/test/pathological/base_test.rb +35 -0
- metadata +8 -31
- data/.rvmrc +0 -57
data/Gemfile.lock
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pathological (0.
|
4
|
+
pathological (0.2.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
9
|
fakefs (0.4.0)
|
10
10
|
minitest (2.5.1)
|
11
|
-
rdiscount (1.6.8)
|
12
11
|
rr (1.0.3)
|
13
12
|
scope (0.2.3)
|
14
13
|
minitest
|
15
|
-
yard (0.7.2)
|
16
14
|
|
17
15
|
PLATFORMS
|
18
16
|
ruby
|
@@ -20,7 +18,5 @@ PLATFORMS
|
|
20
18
|
DEPENDENCIES
|
21
19
|
fakefs
|
22
20
|
pathological!
|
23
|
-
rdiscount (~> 1.6.8)
|
24
21
|
rr (>= 1.0.3)
|
25
22
|
scope (>= 0.2.3)
|
26
|
-
yard (~> 0.7.2)
|
data/lib/pathological/base.rb
CHANGED
@@ -57,8 +57,8 @@ module Pathological
|
|
57
57
|
end
|
58
58
|
return nil if directory && !File.directory?(directory)
|
59
59
|
# Find the full, absolute path of this directory, resolving symlinks. If no directory was given, use the
|
60
|
-
# directory where the
|
61
|
-
full_path = real_path(directory ||
|
60
|
+
# directory where the file requiring pathological resides.
|
61
|
+
full_path = real_path(directory || requiring_filename)
|
62
62
|
current_path = directory ? full_path : File.dirname(full_path)
|
63
63
|
loop do
|
64
64
|
debug "Searching <#{current_path}> for Pathfile."
|
@@ -155,6 +155,18 @@ module Pathological
|
|
155
155
|
@@exclude_root ? paths.reject { |path| File.expand_path(path) == File.expand_path(root) } : paths
|
156
156
|
end
|
157
157
|
|
158
|
+
# Searches the call stack for the file that required pathological.
|
159
|
+
# If no file can be found, falls back to the currently executing file ($0).
|
160
|
+
# This handles the case where the app was launched by another executable (rake, thin, rackup, etc.)
|
161
|
+
#
|
162
|
+
# @return [String] name of file requiring pathological, or the currently executing file.
|
163
|
+
def self.requiring_filename
|
164
|
+
requiring_file = Kernel.caller.find do |stack_line|
|
165
|
+
stack_line.include?("top (required)") && !stack_line.include?("pathological.rb")
|
166
|
+
end
|
167
|
+
requiring_file ? requiring_file.match(/(.+):\d+:in/)[1] : $0 rescue $0
|
168
|
+
end
|
169
|
+
|
158
170
|
private_class_method :debug, :real_path, :parse_pathfile
|
159
171
|
|
160
172
|
# Reset options
|
data/lib/pathological/version.rb
CHANGED
data/pathological.gemspec
CHANGED
@@ -27,7 +27,5 @@ Gem::Specification.new do |s|
|
|
27
27
|
# Require rr >= 1.0.3 and scope >= 0.2.3 for mutual compatibility.
|
28
28
|
s.add_development_dependency "rr", ">= 1.0.3"
|
29
29
|
s.add_development_dependency "scope", ">= 0.2.3"
|
30
|
-
s.add_development_dependency "yard", "~> 0.7.2"
|
31
|
-
s.add_development_dependency "rdiscount", "~> 1.6.8"
|
32
30
|
s.add_development_dependency "fakefs"
|
33
31
|
end
|
@@ -100,6 +100,41 @@ module Pathological
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
context "#requiring_filename" do
|
104
|
+
setup do
|
105
|
+
@full_stacktrace = %Q{
|
106
|
+
/Users/test/ruby/gems/1.9.1/gems/pathological-0.2.2.1/lib/pathological/base.rb:61:in `find_pathfile'
|
107
|
+
/Users/test/gems/pathological-0.2.2.1/lib/pathological/base.rb:36:in `find_load_paths'
|
108
|
+
/Users/test/gems/pathological-0.2.2.1/lib/pathological/base.rb:15:in `add_paths!'
|
109
|
+
/Users/test/gems/pathological-0.2.2.1/lib/pathological.rb:3:in `<top (required)>'
|
110
|
+
/Users/test/ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
|
111
|
+
/Users/test/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
|
112
|
+
/Users/test/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
|
113
|
+
/Users/test/repos/pathological/test/rackup/app.rb:1:in `<top (required)>'
|
114
|
+
/Users/test/.rubies/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
|
115
|
+
}.split("\n")
|
116
|
+
@bad_stacktrace = %Q{
|
117
|
+
/Users/test/repos/pathological/test/rackup/app.rb !!! `<top (required)>'
|
118
|
+
}.split("\n")
|
119
|
+
@empty_stacktrace = []
|
120
|
+
end
|
121
|
+
|
122
|
+
should "find root file from a stacktrace" do
|
123
|
+
stub(Kernel).caller { @full_stacktrace }
|
124
|
+
assert_equal "app.rb", File.basename(Pathological.requiring_filename)
|
125
|
+
end
|
126
|
+
|
127
|
+
should "return executing file from malformed stacktrace" do
|
128
|
+
stub(Kernel).caller { @bad_stacktrace }
|
129
|
+
assert Pathological.requiring_filename
|
130
|
+
end
|
131
|
+
|
132
|
+
should "return executing file if unable to find root file in stacktrace" do
|
133
|
+
stub(Kernel).caller { @empty_stacktrace }
|
134
|
+
assert Pathological.requiring_filename
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
103
138
|
context "loading pathological" do
|
104
139
|
setup do
|
105
140
|
@pathfile_contents = ""
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pathological
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-09-
|
13
|
+
date: 2011-09-28 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rr
|
17
|
-
requirement: &
|
17
|
+
requirement: &2165564740 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.0.3
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2165564740
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: scope
|
28
|
-
requirement: &
|
28
|
+
requirement: &2165564280 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,32 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.2.3
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: yard
|
39
|
-
requirement: &70361439566960 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: 0.7.2
|
45
|
-
type: :development
|
46
|
-
prerelease: false
|
47
|
-
version_requirements: *70361439566960
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: rdiscount
|
50
|
-
requirement: &70361439566380 !ruby/object:Gem::Requirement
|
51
|
-
none: false
|
52
|
-
requirements:
|
53
|
-
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: 1.6.8
|
56
|
-
type: :development
|
57
|
-
prerelease: false
|
58
|
-
version_requirements: *70361439566380
|
36
|
+
version_requirements: *2165564280
|
59
37
|
- !ruby/object:Gem::Dependency
|
60
38
|
name: fakefs
|
61
|
-
requirement: &
|
39
|
+
requirement: &2165563900 !ruby/object:Gem::Requirement
|
62
40
|
none: false
|
63
41
|
requirements:
|
64
42
|
- - ! '>='
|
@@ -66,7 +44,7 @@ dependencies:
|
|
66
44
|
version: '0'
|
67
45
|
type: :development
|
68
46
|
prerelease: false
|
69
|
-
version_requirements: *
|
47
|
+
version_requirements: *2165563900
|
70
48
|
description: ! " Pathological provides a way to manage a project's require paths
|
71
49
|
by using a small config file that\n indicates all directories to include in the
|
72
50
|
load path.\n"
|
@@ -77,7 +55,6 @@ executables: []
|
|
77
55
|
extensions: []
|
78
56
|
extra_rdoc_files: []
|
79
57
|
files:
|
80
|
-
- .rvmrc
|
81
58
|
- .yardopts
|
82
59
|
- Gemfile
|
83
60
|
- Gemfile.lock
|
data/.rvmrc
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
# WARNING: DO NOT MANUALLY EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING.
|
4
|
-
# This file was generated automatically using ofe/tools/rvmrc_create.sh (which is in turn a wrapper around the
|
5
|
-
# rvm command rvm --rvmrc). It was generated in the following way:
|
6
|
-
#
|
7
|
-
# $ rvmrc_create.sh use 1.9.2@pathological --create
|
8
|
-
#
|
9
|
-
# Please use rvmrc_create.sh if you want to change what this project rvmrc does.
|
10
|
-
|
11
|
-
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
12
|
-
# development environment upon cd'ing into the directory
|
13
|
-
|
14
|
-
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
|
15
|
-
environment_id="ruby-1.9.2-p180@pathological"
|
16
|
-
|
17
|
-
#
|
18
|
-
# First we attempt to load the desired environment directly from the environment
|
19
|
-
# file. This is very fast and efficicent compared to running through the entire
|
20
|
-
# CLI and selector. If you want feedback on which environment was used then
|
21
|
-
# insert the word 'use' after --create as this triggers verbose mode.
|
22
|
-
#
|
23
|
-
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
|
24
|
-
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
|
25
|
-
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
26
|
-
|
27
|
-
[[ -s ".rvm/hooks/after_use" ]] && . ".rvm/hooks/after_use"
|
28
|
-
else
|
29
|
-
# If the environment file has not yet been created, use the RVM CLI to select.
|
30
|
-
rvm --create use "$environment_id"
|
31
|
-
fi
|
32
|
-
|
33
|
-
#
|
34
|
-
# If you use an RVM gemset file to install a list of gems (*.gems), you can have
|
35
|
-
# it be automatically loaded. Uncomment the following and adjust the filename if
|
36
|
-
# necessary.
|
37
|
-
#
|
38
|
-
# filename=".gems"
|
39
|
-
# if [[ -s "$filename" ]] ; then
|
40
|
-
# rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
|
41
|
-
# fi
|
42
|
-
|
43
|
-
#
|
44
|
-
# If you use bundler and would like to run bundle each time you enter the
|
45
|
-
# directory, you can uncomment the following code.
|
46
|
-
#
|
47
|
-
# # Ensure that Bundler is installed. Install it if it is not.
|
48
|
-
# if ! command -v bundle >/dev/null; then
|
49
|
-
# printf "The rubygem 'bundler' is not installed. Installing it now.\n"
|
50
|
-
# gem install bundler
|
51
|
-
# fi
|
52
|
-
#
|
53
|
-
# # Bundle while reducing excess noise.
|
54
|
-
# printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
|
55
|
-
# bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
|
56
|
-
#
|
57
|
-
|