loadable 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.index +65 -0
- data/.ruby +1 -51
- data/{HISTORY.rdoc → HISTORY.md} +15 -5
- data/INFRACTIONS.md +397 -0
- data/LICENSE.txt +22 -0
- data/README.md +55 -47
- data/lib/loadable/core_ext/rubygems.rb +6 -8
- data/lib/loadable/domain.rb +2 -2
- data/lib/loadable/loaders/gem_loader.rb +2 -2
- data/spec/runner.rb +5 -0
- data/spec/{gem_loader_spec.rb → spec_gem_loader.rb} +0 -0
- data/spec/{ruby_loader_spec.rb → spec_ruby_loader.rb} +0 -0
- data/spec/{vendor_loader_spec.rb → spec_vendor_loader.rb} +0 -0
- metadata +52 -24
- data/COPYING.rdoc +0 -31
- data/INFRACTIONS.rdoc +0 -401
data/.index
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
type: ruby
|
3
|
+
revision: 2013
|
4
|
+
sources:
|
5
|
+
- var
|
6
|
+
authors:
|
7
|
+
- name: Thomas Sawyer
|
8
|
+
email: transfire@gmail.com
|
9
|
+
organizations: []
|
10
|
+
requirements:
|
11
|
+
- groups:
|
12
|
+
- build
|
13
|
+
development: true
|
14
|
+
name: detroit
|
15
|
+
- groups:
|
16
|
+
- test
|
17
|
+
development: true
|
18
|
+
name: minitest
|
19
|
+
- groups:
|
20
|
+
- test
|
21
|
+
development: true
|
22
|
+
name: minitap
|
23
|
+
- groups:
|
24
|
+
- build
|
25
|
+
development: true
|
26
|
+
name: rake
|
27
|
+
conflicts: []
|
28
|
+
alternatives: []
|
29
|
+
resources:
|
30
|
+
- type: home
|
31
|
+
uri: http://rubyworks.github.com/loadable
|
32
|
+
label: Homepage
|
33
|
+
- type: code
|
34
|
+
uri: http://github.com/rubyworks/loadable
|
35
|
+
label: Source Code
|
36
|
+
- type: docs
|
37
|
+
uri: http://rubydoc.info/github/rubyworks/loadable/master/frames
|
38
|
+
label: Documentation
|
39
|
+
- type: mail
|
40
|
+
uri: http://groups.google.com/group/rubyworks-mailinglist
|
41
|
+
label: Mailing List
|
42
|
+
- type: chat
|
43
|
+
uri: irc://irc.freenode.net/rubyworks
|
44
|
+
label: IRC Channel
|
45
|
+
repositories:
|
46
|
+
- name: upstream
|
47
|
+
scm: git
|
48
|
+
uri: git://github.com/rubyworks/loadable.git
|
49
|
+
categories: []
|
50
|
+
paths:
|
51
|
+
load:
|
52
|
+
- lib
|
53
|
+
copyrights:
|
54
|
+
- holder: Thomas Sawyer, RubyWorks
|
55
|
+
year: '2010'
|
56
|
+
license: BSD-2-Clause
|
57
|
+
created: '2010-07-21'
|
58
|
+
summary: Safely Customize Ruby's Load System
|
59
|
+
title: Loadable
|
60
|
+
version: 1.2.1
|
61
|
+
name: loadable
|
62
|
+
description: Loadable modifieds Ruby's load/require system to handle "load wedges",
|
63
|
+
which work much like routes in web frameworks, but in this case determine which
|
64
|
+
files get loaded.
|
65
|
+
date: '2012-12-21'
|
data/.ruby
CHANGED
@@ -1,51 +1 @@
|
|
1
|
-
|
2
|
-
authors:
|
3
|
-
- name: Thomas Sawyer
|
4
|
-
email: transfire@gmail.com
|
5
|
-
copyrights:
|
6
|
-
- holder: Thomas Sawyer, RubyWorks
|
7
|
-
year: '2010'
|
8
|
-
license: BSD-2-Clause
|
9
|
-
replacements: []
|
10
|
-
conflicts: []
|
11
|
-
requirements:
|
12
|
-
- name: detroit
|
13
|
-
groups:
|
14
|
-
- build
|
15
|
-
development: true
|
16
|
-
- name: minitest
|
17
|
-
groups:
|
18
|
-
- test
|
19
|
-
development: true
|
20
|
-
- name: minitap
|
21
|
-
groups:
|
22
|
-
- test
|
23
|
-
development: true
|
24
|
-
- name: rake
|
25
|
-
groups:
|
26
|
-
- build
|
27
|
-
development: true
|
28
|
-
dependencies: []
|
29
|
-
repositories:
|
30
|
-
- uri: git://github.com/rubyworks/loadable.git
|
31
|
-
scm: git
|
32
|
-
name: upstream
|
33
|
-
resources:
|
34
|
-
home: http://rubyworks.github.com/loadable
|
35
|
-
code: http://github.com/rubyworks/loadable
|
36
|
-
load_path:
|
37
|
-
- lib
|
38
|
-
extra: {}
|
39
|
-
source:
|
40
|
-
- Profile
|
41
|
-
alternatives: []
|
42
|
-
revision: 0
|
43
|
-
created: '2010-07-21'
|
44
|
-
summary: Safely Customize Ruby's Load System
|
45
|
-
title: Loadable
|
46
|
-
name: loadable
|
47
|
-
version: 1.2.0
|
48
|
-
description: Loadable modifieds Ruby's load/require system to handle "load wedges",
|
49
|
-
which work much like routes in web frameworks, but in this case determine which
|
50
|
-
files get loaded.
|
51
|
-
date: '2011-10-17'
|
1
|
+
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
|
data/{HISTORY.rdoc → HISTORY.md}
RENAMED
@@ -1,6 +1,16 @@
|
|
1
|
-
|
1
|
+
# RELEASE HISTORY
|
2
2
|
|
3
|
-
|
3
|
+
## 1.2.1 / 2012-12-21
|
4
|
+
|
5
|
+
Long overdo bug fix release. This release fixes a typo in the
|
6
|
+
rubygems search function.
|
7
|
+
|
8
|
+
Changes:
|
9
|
+
|
10
|
+
* Fix bug in rubygems search function.
|
11
|
+
|
12
|
+
|
13
|
+
## 1.2.0 / 2011-10-15
|
4
14
|
|
5
15
|
This release brings an almost complete rewrite of the API and
|
6
16
|
a renaming of the project form 'wedge' to 'loadable'. See the
|
@@ -15,7 +25,7 @@ Changes:
|
|
15
25
|
* New VendorLoader to support development.
|
16
26
|
|
17
27
|
|
18
|
-
|
28
|
+
## 1.1.0 / 2011-07-03
|
19
29
|
|
20
30
|
The Ruby wedge is no longer automatuically loaded when using
|
21
31
|
`require "wedge"`. Load it manually loaded with `require "wedge/ruby`".
|
@@ -25,7 +35,7 @@ Changes:
|
|
25
35
|
* Ruby wedge is not automatically loaded with wedge library.
|
26
36
|
|
27
37
|
|
28
|
-
|
38
|
+
## 1.0.0 / 2010-09-03
|
29
39
|
|
30
40
|
This release is simply a maintenance release, updating some project metadata.
|
31
41
|
No functionality has been changed.
|
@@ -35,7 +45,7 @@ Changes:
|
|
35
45
|
* Uupdate project metadata to latest POM.
|
36
46
|
|
37
47
|
|
38
|
-
|
48
|
+
## 1.0.0 / 2010-08-01
|
39
49
|
|
40
50
|
Initial release of Wedge, a tool for easily creating custom
|
41
51
|
load managers.
|
data/INFRACTIONS.md
ADDED
@@ -0,0 +1,397 @@
|
|
1
|
+
# INFRACTIONS
|
2
|
+
|
3
|
+
One of the rarely mentioned edge cases with the way in which RubyGems loads
|
4
|
+
library files, and in fact the way Ruby's load system works in general, is
|
5
|
+
that the _lib space_ is a free for all. Any library can drop any file into
|
6
|
+
their package's loadpath (i.e. the lib/ directory) and potentially clobber
|
7
|
+
a file of the same name in some one else's library.
|
8
|
+
|
9
|
+
Here's an example irb session that demonstrate the issue. Here I already added
|
10
|
+
a `matrix.rb` file, that does nothing but <code>puts "HERE!"</code>, to the `cuts`
|
11
|
+
gem and installed it.
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
=> true
|
15
|
+
gem "cuts"
|
16
|
+
=> true
|
17
|
+
require 'matrix'
|
18
|
+
HERE!
|
19
|
+
=> true
|
20
|
+
|
21
|
+
Now, a good <i>gem citizen</i> knows to put their scripts in a directory with
|
22
|
+
the same name as their gem package, nonetheless you might be surprised to see
|
23
|
+
how often this simple but important practice is violated.
|
24
|
+
Consequently the order in which such gems are searched becomes of
|
25
|
+
paramount importance --something that worked just fine on one machine can
|
26
|
+
suddenly stop working on another for no obvious reason.
|
27
|
+
|
28
|
+
|
29
|
+
## ISOLATIONISTS
|
30
|
+
|
31
|
+
It is also worth noting that the recent crop of gem isolation systems, such as
|
32
|
+
Bundler and Isolate, while serving to reduce the likelihood of possible name
|
33
|
+
clashes still do not fully remedy the issue. They merely reduce the number of
|
34
|
+
gems that could cause the problem for any given dependent application.
|
35
|
+
|
36
|
+
|
37
|
+
## SOLUTION
|
38
|
+
|
39
|
+
The Ruby and Gem wedges solves the issue entirely by allowing us to load files
|
40
|
+
from a single gem and only that gem. It does so by adding a new valid syntax
|
41
|
+
to Ruby's #load and #require methods. As an example, let's say we wanted to
|
42
|
+
load the troff.rb script from the unroller library.
|
43
|
+
|
44
|
+
require 'troff', :from => 'unroller'
|
45
|
+
|
46
|
+
The colon is used to separate the gem name from the rest of the pathname.
|
47
|
+
With this we can be 100% certain that the troff.rb file was required
|
48
|
+
from the unroller gem and not a 'troff.rb' file from any other
|
49
|
+
gem that might have created a script by the same name.
|
50
|
+
|
51
|
+
|
52
|
+
## EXTENT OF THE ISSUE
|
53
|
+
|
54
|
+
You might be suprised to find out how many libraries violate the best practice
|
55
|
+
of putting all thier scripts in a subdirectory by the same name as the package.
|
56
|
+
Just on my development system alone, which really has but a small number of
|
57
|
+
gems installed, there are quite a few cases.
|
58
|
+
|
59
|
+
ParseTree-2.2.0/lib/:
|
60
|
+
|
61
|
+
composite_sexp_processor.rb
|
62
|
+
parse_tree.rb
|
63
|
+
sexp.rb
|
64
|
+
sexp_processor.rb
|
65
|
+
unified_ruby.rb
|
66
|
+
unique.rb
|
67
|
+
|
68
|
+
ParseTree-3.0.3/lib/:
|
69
|
+
|
70
|
+
gauntlet_parsetree.rb
|
71
|
+
parse_tree.rb
|
72
|
+
parse_tree_extensions.rb
|
73
|
+
unified_ruby.rb
|
74
|
+
unique.rb
|
75
|
+
|
76
|
+
RedCloth-4.1.9/lib/:
|
77
|
+
|
78
|
+
case_sensitive_require
|
79
|
+
redcloth
|
80
|
+
redcloth.rb
|
81
|
+
redcloth_scan.so
|
82
|
+
|
83
|
+
RedCloth-4.2.2/lib/:
|
84
|
+
|
85
|
+
case_sensitive_require
|
86
|
+
redcloth
|
87
|
+
redcloth.rb
|
88
|
+
redcloth_scan.so
|
89
|
+
tasks
|
90
|
+
|
91
|
+
ZenTest-4.0.0/lib/:
|
92
|
+
autotest
|
93
|
+
autotest.rb
|
94
|
+
focus.rb
|
95
|
+
functional_test_matrix.rb
|
96
|
+
multiruby.rb
|
97
|
+
unit_diff.rb
|
98
|
+
zentest.rb
|
99
|
+
zentest_mapping.rb
|
100
|
+
|
101
|
+
bossman-0.4.1/lib/:
|
102
|
+
|
103
|
+
bossman
|
104
|
+
bossman.rb
|
105
|
+
extensions
|
106
|
+
|
107
|
+
builder-2.1.2/lib/:
|
108
|
+
|
109
|
+
blankslate.rb
|
110
|
+
builder
|
111
|
+
builder.rb
|
112
|
+
|
113
|
+
chardet-0.9.0/lib/:
|
114
|
+
|
115
|
+
Big5Freq.rb
|
116
|
+
Big5Prober.rb
|
117
|
+
CharDistributionAnalysis.rb
|
118
|
+
CharSetGroupProber.rb
|
119
|
+
CharSetProber.rb
|
120
|
+
CodingStateMachine.rb
|
121
|
+
ESCSM.rb
|
122
|
+
EUCJPProber.rb
|
123
|
+
EUCKRFreq.rb
|
124
|
+
EUCKRProber.rb
|
125
|
+
EUCTWFreq.rb
|
126
|
+
EUCTWProber.rb
|
127
|
+
EscCharSetProber.rb
|
128
|
+
GB2312Freq.rb
|
129
|
+
GB2312Prober.rb
|
130
|
+
HebrewProber.rb
|
131
|
+
JISFreq.rb
|
132
|
+
JapaneseContextAnalysis.rb
|
133
|
+
LangBulgarianModel.rb
|
134
|
+
LangCyrillicModel.rb
|
135
|
+
LangGreekModel.rb
|
136
|
+
LangHebrewModel.rb
|
137
|
+
LangHungarianModel.rb
|
138
|
+
LangThaiModel.rb
|
139
|
+
Latin1Prober.rb
|
140
|
+
MBCSGroupProber.rb
|
141
|
+
MBCSSM.rb
|
142
|
+
MultiByteCharSetProber.rb
|
143
|
+
SBCSGroupProber.rb
|
144
|
+
SJISProber.rb
|
145
|
+
SingleByteCharSetProber.rb
|
146
|
+
UTF8Prober.rb
|
147
|
+
UniversalDetector.rb
|
148
|
+
|
149
|
+
eventmachine-0.12.10/lib/:
|
150
|
+
|
151
|
+
em
|
152
|
+
eventmachine.rb
|
153
|
+
evma
|
154
|
+
evma.rb
|
155
|
+
fastfilereaderext.so
|
156
|
+
jeventmachine.rb
|
157
|
+
pr_eventmachine.rb
|
158
|
+
rubyeventmachine.so
|
159
|
+
|
160
|
+
hpricot-0.8.1/lib/:
|
161
|
+
|
162
|
+
fast_xs.so
|
163
|
+
hpricot
|
164
|
+
hpricot.rb
|
165
|
+
hpricot_scan.so
|
166
|
+
|
167
|
+
html5-0.10.0/lib/:
|
168
|
+
|
169
|
+
core_ext
|
170
|
+
html5
|
171
|
+
html5.rb
|
172
|
+
|
173
|
+
http_router-0.2.5/lib/:
|
174
|
+
|
175
|
+
ext
|
176
|
+
http_router
|
177
|
+
http_router.rb
|
178
|
+
|
179
|
+
httpclient-2.1.5.2/lib/:
|
180
|
+
|
181
|
+
http-access2
|
182
|
+
http-access2.rb
|
183
|
+
httpclient
|
184
|
+
httpclient.rb
|
185
|
+
tags
|
186
|
+
|
187
|
+
linecache-0.43/lib/:
|
188
|
+
|
189
|
+
linecache.rb
|
190
|
+
trace_nums.so
|
191
|
+
tracelines.rb
|
192
|
+
|
193
|
+
liquid-2.0.0/lib/:
|
194
|
+
|
195
|
+
extras
|
196
|
+
liquid
|
197
|
+
liquid.rb
|
198
|
+
|
199
|
+
mail-2.2.5/lib/:
|
200
|
+
|
201
|
+
VERSION
|
202
|
+
mail
|
203
|
+
mail.rb
|
204
|
+
mail.rbc
|
205
|
+
tasks
|
206
|
+
|
207
|
+
maruku-0.5.9/lib/:
|
208
|
+
|
209
|
+
maruku
|
210
|
+
maruku.rb
|
211
|
+
sort_prof.rb
|
212
|
+
|
213
|
+
mechanize-0.9.3/lib/:
|
214
|
+
|
215
|
+
mechanize.rb
|
216
|
+
www
|
217
|
+
|
218
|
+
memcache-client-1.7.8/lib/:
|
219
|
+
|
220
|
+
continuum_native.rb
|
221
|
+
memcache.rb
|
222
|
+
memcache_util.rb
|
223
|
+
|
224
|
+
mocha-0.9.8/lib/:
|
225
|
+
|
226
|
+
mocha
|
227
|
+
mocha.rb
|
228
|
+
mocha_standalone.rb
|
229
|
+
stubba.rb
|
230
|
+
|
231
|
+
packr-3.1.0/lib/:
|
232
|
+
|
233
|
+
packr
|
234
|
+
packr.rb
|
235
|
+
string.rb
|
236
|
+
|
237
|
+
qed-2.3.0/lib/:
|
238
|
+
|
239
|
+
qed
|
240
|
+
qed.rb
|
241
|
+
qedoc
|
242
|
+
|
243
|
+
quality_extensions-1.1.6/lib/:
|
244
|
+
|
245
|
+
Xfind_bug_test.rb
|
246
|
+
quality_extensions
|
247
|
+
quality_extensions.rb
|
248
|
+
|
249
|
+
radiant-0.8.2/lib/:
|
250
|
+
|
251
|
+
annotatable.rb
|
252
|
+
autotest
|
253
|
+
generators
|
254
|
+
inheritable_class_attributes.rb
|
255
|
+
local_time.rb
|
256
|
+
login_system.rb
|
257
|
+
method_observer.rb
|
258
|
+
plugins
|
259
|
+
radiant
|
260
|
+
radiant.rb
|
261
|
+
simpleton.rb
|
262
|
+
task_support.rb
|
263
|
+
tasks
|
264
|
+
|
265
|
+
rails-2.3.5/lib/:
|
266
|
+
|
267
|
+
code_statistics.rb
|
268
|
+
commands
|
269
|
+
commands.rb
|
270
|
+
console_app.rb
|
271
|
+
console_sandbox.rb
|
272
|
+
console_with_helpers.rb
|
273
|
+
dispatcher.rb
|
274
|
+
fcgi_handler.rb
|
275
|
+
initializer.rb
|
276
|
+
performance_test_help.rb
|
277
|
+
rails
|
278
|
+
rails_generator
|
279
|
+
rails_generator.rb
|
280
|
+
railties_path.rb
|
281
|
+
ruby_version_check.rb
|
282
|
+
rubyprof_ext.rb
|
283
|
+
source_annotation_extractor.rb
|
284
|
+
tasks
|
285
|
+
test_help.rb
|
286
|
+
webrick_server.rb
|
287
|
+
|
288
|
+
railties-3.0.0.beta/lib/:
|
289
|
+
|
290
|
+
generators
|
291
|
+
rails
|
292
|
+
rails.rb
|
293
|
+
|
294
|
+
ramaze-2010.01/lib/:
|
295
|
+
|
296
|
+
proto
|
297
|
+
ramaze
|
298
|
+
ramaze.rb
|
299
|
+
vendor
|
300
|
+
|
301
|
+
rdiscount-1.3.5/lib/:
|
302
|
+
|
303
|
+
markdown.rb
|
304
|
+
rdiscount.rb
|
305
|
+
rdiscount.so
|
306
|
+
|
307
|
+
red-3.5.0/lib/:
|
308
|
+
|
309
|
+
javascripts
|
310
|
+
red
|
311
|
+
red.rb
|
312
|
+
|
313
|
+
red-4.1.7/lib/:
|
314
|
+
|
315
|
+
red
|
316
|
+
red.rb
|
317
|
+
source
|
318
|
+
|
319
|
+
rmagick-2.12.2/lib/:
|
320
|
+
|
321
|
+
RMagick.rb
|
322
|
+
RMagick2.so
|
323
|
+
rvg
|
324
|
+
|
325
|
+
ruby-prof-0.7.3/lib/:
|
326
|
+
|
327
|
+
ruby-prof
|
328
|
+
ruby-prof.rb
|
329
|
+
ruby_prof.so
|
330
|
+
unprof.rb
|
331
|
+
|
332
|
+
ruby_parser-2.0.4/lib/:
|
333
|
+
|
334
|
+
gauntlet_rubyparser.rb
|
335
|
+
ruby_lexer.rb
|
336
|
+
ruby_parser.rb
|
337
|
+
ruby_parser.y
|
338
|
+
ruby_parser_extras.rb
|
339
|
+
|
340
|
+
rubygems-update-1.3.7/lib/:
|
341
|
+
|
342
|
+
gauntlet_rubygems.rb
|
343
|
+
rbconfig
|
344
|
+
rubygems
|
345
|
+
rubygems.rb
|
346
|
+
ubygems.rb
|
347
|
+
|
348
|
+
s3sync-1.2.5/lib/:
|
349
|
+
|
350
|
+
HTTPStreaming.rb
|
351
|
+
S3.rb
|
352
|
+
S3_s3sync_mod.rb
|
353
|
+
S3encoder.rb
|
354
|
+
s3config.rb
|
355
|
+
s3try.rb
|
356
|
+
thread_generator.rb
|
357
|
+
version.rb
|
358
|
+
|
359
|
+
sexp_processor-3.0.1/lib/:
|
360
|
+
|
361
|
+
composite_sexp_processor.rb
|
362
|
+
sexp.rb
|
363
|
+
sexp_processor.rb
|
364
|
+
|
365
|
+
sexp_processor-3.0.3/lib/:
|
366
|
+
|
367
|
+
composite_sexp_processor.rb
|
368
|
+
sexp.rb
|
369
|
+
sexp_processor.rb
|
370
|
+
unique.rb
|
371
|
+
|
372
|
+
slim_scrooge-1.0.5/lib/:
|
373
|
+
|
374
|
+
callsite_hash.so
|
375
|
+
slim_scrooge
|
376
|
+
slim_scrooge.rb
|
377
|
+
|
378
|
+
treetop-1.2.4/lib/:
|
379
|
+
|
380
|
+
metagrammar.rb
|
381
|
+
treetop
|
382
|
+
treetop.rb
|
383
|
+
|
384
|
+
unroller-1.0.0/lib/:
|
385
|
+
|
386
|
+
troff.rb
|
387
|
+
tron.rb
|
388
|
+
unroller.rb
|
389
|
+
|
390
|
+
xcb-0.0.1/lib/:
|
391
|
+
|
392
|
+
directory_monitor.rb
|
393
|
+
extreme_continuous_builder.rb
|
394
|
+
notifiers.rb
|
395
|
+
stacking_config.rb
|
396
|
+
xcb_command.rb
|
397
|
+
|