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/COPYING.rdoc
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
= COPYRIGHT NOTICES
|
2
|
-
|
3
|
-
== Load System
|
4
|
-
|
5
|
-
Copyright:: (c) 2010 Rubyworks, Thomas Sawyer
|
6
|
-
License:: BSD-2-Clause
|
7
|
-
Wedsite:: http://rubyworks.github.com/wedge
|
8
|
-
|
9
|
-
Copyright 2010 Rubyworks, Thomas Sawyer. All rights reserved.
|
10
|
-
|
11
|
-
Redistribution and use in source and binary forms, with or without modification, are
|
12
|
-
permitted provided that the following conditions are met:
|
13
|
-
|
14
|
-
1. Redistributions of source code must retain the above copyright notice, this list of
|
15
|
-
conditions and the following disclaimer.
|
16
|
-
|
17
|
-
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
18
|
-
of conditions and the following disclaimer in the documentation and/or other materials
|
19
|
-
provided with the distribution.
|
20
|
-
|
21
|
-
THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
22
|
-
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
|
24
|
-
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
25
|
-
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
26
|
-
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
27
|
-
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
28
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
29
|
-
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
-
|
31
|
-
(http://www.spdx.org/licenses/BSD-2-Clause)
|
data/INFRACTIONS.rdoc
DELETED
@@ -1,401 +0,0 @@
|
|
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, the did 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 to
|
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 'unroller:troff'
|
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
|
-
grosser-parallel-0.3.1/lib/:
|
161
|
-
|
162
|
-
parallel.rb
|
163
|
-
|
164
|
-
hpricot-0.8.1/lib/:
|
165
|
-
|
166
|
-
fast_xs.so
|
167
|
-
hpricot
|
168
|
-
hpricot.rb
|
169
|
-
hpricot_scan.so
|
170
|
-
|
171
|
-
html5-0.10.0/lib/:
|
172
|
-
|
173
|
-
core_ext
|
174
|
-
html5
|
175
|
-
html5.rb
|
176
|
-
|
177
|
-
http_router-0.2.5/lib/:
|
178
|
-
|
179
|
-
ext
|
180
|
-
http_router
|
181
|
-
http_router.rb
|
182
|
-
|
183
|
-
httpclient-2.1.5.2/lib/:
|
184
|
-
|
185
|
-
http-access2
|
186
|
-
http-access2.rb
|
187
|
-
httpclient
|
188
|
-
httpclient.rb
|
189
|
-
tags
|
190
|
-
|
191
|
-
linecache-0.43/lib/:
|
192
|
-
|
193
|
-
linecache.rb
|
194
|
-
trace_nums.so
|
195
|
-
tracelines.rb
|
196
|
-
|
197
|
-
liquid-2.0.0/lib/:
|
198
|
-
|
199
|
-
extras
|
200
|
-
liquid
|
201
|
-
liquid.rb
|
202
|
-
|
203
|
-
mail-2.2.5/lib/:
|
204
|
-
|
205
|
-
VERSION
|
206
|
-
mail
|
207
|
-
mail.rb
|
208
|
-
mail.rbc
|
209
|
-
tasks
|
210
|
-
|
211
|
-
maruku-0.5.9/lib/:
|
212
|
-
|
213
|
-
maruku
|
214
|
-
maruku.rb
|
215
|
-
sort_prof.rb
|
216
|
-
|
217
|
-
mechanize-0.9.3/lib/:
|
218
|
-
|
219
|
-
mechanize.rb
|
220
|
-
www
|
221
|
-
|
222
|
-
memcache-client-1.7.8/lib/:
|
223
|
-
|
224
|
-
continuum_native.rb
|
225
|
-
memcache.rb
|
226
|
-
memcache_util.rb
|
227
|
-
|
228
|
-
mocha-0.9.8/lib/:
|
229
|
-
|
230
|
-
mocha
|
231
|
-
mocha.rb
|
232
|
-
mocha_standalone.rb
|
233
|
-
stubba.rb
|
234
|
-
|
235
|
-
packr-3.1.0/lib/:
|
236
|
-
|
237
|
-
packr
|
238
|
-
packr.rb
|
239
|
-
string.rb
|
240
|
-
|
241
|
-
qed-2.3.0/lib/:
|
242
|
-
|
243
|
-
qed
|
244
|
-
qed.rb
|
245
|
-
qedoc
|
246
|
-
|
247
|
-
quality_extensions-1.1.6/lib/:
|
248
|
-
|
249
|
-
Xfind_bug_test.rb
|
250
|
-
quality_extensions
|
251
|
-
quality_extensions.rb
|
252
|
-
|
253
|
-
radiant-0.8.2/lib/:
|
254
|
-
|
255
|
-
annotatable.rb
|
256
|
-
autotest
|
257
|
-
generators
|
258
|
-
inheritable_class_attributes.rb
|
259
|
-
local_time.rb
|
260
|
-
login_system.rb
|
261
|
-
method_observer.rb
|
262
|
-
plugins
|
263
|
-
radiant
|
264
|
-
radiant.rb
|
265
|
-
simpleton.rb
|
266
|
-
task_support.rb
|
267
|
-
tasks
|
268
|
-
|
269
|
-
rails-2.3.5/lib/:
|
270
|
-
|
271
|
-
code_statistics.rb
|
272
|
-
commands
|
273
|
-
commands.rb
|
274
|
-
console_app.rb
|
275
|
-
console_sandbox.rb
|
276
|
-
console_with_helpers.rb
|
277
|
-
dispatcher.rb
|
278
|
-
fcgi_handler.rb
|
279
|
-
initializer.rb
|
280
|
-
performance_test_help.rb
|
281
|
-
rails
|
282
|
-
rails_generator
|
283
|
-
rails_generator.rb
|
284
|
-
railties_path.rb
|
285
|
-
ruby_version_check.rb
|
286
|
-
rubyprof_ext.rb
|
287
|
-
source_annotation_extractor.rb
|
288
|
-
tasks
|
289
|
-
test_help.rb
|
290
|
-
webrick_server.rb
|
291
|
-
|
292
|
-
railties-3.0.0.beta/lib/:
|
293
|
-
|
294
|
-
generators
|
295
|
-
rails
|
296
|
-
rails.rb
|
297
|
-
|
298
|
-
ramaze-2010.01/lib/:
|
299
|
-
|
300
|
-
proto
|
301
|
-
ramaze
|
302
|
-
ramaze.rb
|
303
|
-
vendor
|
304
|
-
|
305
|
-
rdiscount-1.3.5/lib/:
|
306
|
-
|
307
|
-
markdown.rb
|
308
|
-
rdiscount.rb
|
309
|
-
rdiscount.so
|
310
|
-
|
311
|
-
red-3.5.0/lib/:
|
312
|
-
|
313
|
-
javascripts
|
314
|
-
red
|
315
|
-
red.rb
|
316
|
-
|
317
|
-
red-4.1.7/lib/:
|
318
|
-
|
319
|
-
red
|
320
|
-
red.rb
|
321
|
-
source
|
322
|
-
|
323
|
-
rmagick-2.12.2/lib/:
|
324
|
-
|
325
|
-
RMagick.rb
|
326
|
-
RMagick2.so
|
327
|
-
rvg
|
328
|
-
|
329
|
-
ruby-prof-0.7.3/lib/:
|
330
|
-
|
331
|
-
ruby-prof
|
332
|
-
ruby-prof.rb
|
333
|
-
ruby_prof.so
|
334
|
-
unprof.rb
|
335
|
-
|
336
|
-
ruby_parser-2.0.4/lib/:
|
337
|
-
|
338
|
-
gauntlet_rubyparser.rb
|
339
|
-
ruby_lexer.rb
|
340
|
-
ruby_parser.rb
|
341
|
-
ruby_parser.y
|
342
|
-
ruby_parser_extras.rb
|
343
|
-
|
344
|
-
rubygems-update-1.3.7/lib/:
|
345
|
-
|
346
|
-
gauntlet_rubygems.rb
|
347
|
-
rbconfig
|
348
|
-
rubygems
|
349
|
-
rubygems.rb
|
350
|
-
ubygems.rb
|
351
|
-
|
352
|
-
s3sync-1.2.5/lib/:
|
353
|
-
|
354
|
-
HTTPStreaming.rb
|
355
|
-
S3.rb
|
356
|
-
S3_s3sync_mod.rb
|
357
|
-
S3encoder.rb
|
358
|
-
s3config.rb
|
359
|
-
s3try.rb
|
360
|
-
thread_generator.rb
|
361
|
-
version.rb
|
362
|
-
|
363
|
-
sexp_processor-3.0.1/lib/:
|
364
|
-
|
365
|
-
composite_sexp_processor.rb
|
366
|
-
sexp.rb
|
367
|
-
sexp_processor.rb
|
368
|
-
|
369
|
-
sexp_processor-3.0.3/lib/:
|
370
|
-
|
371
|
-
composite_sexp_processor.rb
|
372
|
-
sexp.rb
|
373
|
-
sexp_processor.rb
|
374
|
-
unique.rb
|
375
|
-
|
376
|
-
slim_scrooge-1.0.5/lib/:
|
377
|
-
|
378
|
-
callsite_hash.so
|
379
|
-
slim_scrooge
|
380
|
-
slim_scrooge.rb
|
381
|
-
|
382
|
-
treetop-1.2.4/lib/:
|
383
|
-
|
384
|
-
metagrammar.rb
|
385
|
-
treetop
|
386
|
-
treetop.rb
|
387
|
-
|
388
|
-
unroller-1.0.0/lib/:
|
389
|
-
|
390
|
-
troff.rb
|
391
|
-
tron.rb
|
392
|
-
unroller.rb
|
393
|
-
|
394
|
-
xcb-0.0.1/lib/:
|
395
|
-
|
396
|
-
directory_monitor.rb
|
397
|
-
extreme_continuous_builder.rb
|
398
|
-
notifiers.rb
|
399
|
-
stacking_config.rb
|
400
|
-
xcb_command.rb
|
401
|
-
|