loadable 1.2.0 → 1.2.1
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/.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
|
+
|