pluginfactory 1.0.3 → 1.0.4
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/ChangeLog +26 -0
- data/README +1 -1
- data/Rakefile +82 -22
- data/lib/pluginfactory.rb +77 -39
- data/rake/191_compat.rb +26 -0
- data/rake/dependencies.rb +25 -11
- data/rake/helpers.rb +65 -40
- data/rake/manual.rb +464 -64
- data/rake/publishing.rb +30 -16
- data/rake/rdoc.rb +36 -21
- data/rake/svn.rb +166 -25
- data/rake/testing.rb +46 -35
- data/rake/win32.rb +94 -0
- data/spec/lib/helpers.rb +247 -0
- data/spec/pluginfactory_spec.rb +43 -69
- metadata +138 -9
data/ChangeLog
CHANGED
@@ -1,3 +1,29 @@
|
|
1
|
+
-- Wed, 25 Feb 2009 17:50:55 -0000 by deveiant (r57) -----
|
2
|
+
Changed: lib/pluginfactory.rb
|
3
|
+
|
4
|
+
Incrementing library version.
|
5
|
+
|
6
|
+
|
7
|
+
-- Wed, 25 Feb 2009 16:52:20 -0000 by deveiant (r56) -----
|
8
|
+
Added: spec/lib (new)
|
9
|
+
spec/lib/helpers.rb (new)
|
10
|
+
Changed: lib/pluginfactory.rb
|
11
|
+
spec/pluginfactory_spec.rb
|
12
|
+
|
13
|
+
* Fixes for Ruby 1.9.1.
|
14
|
+
* Replace home-grown logger stuff with Logger library
|
15
|
+
|
16
|
+
|
17
|
+
-- Mon, 23 Feb 2009 06:34:03 -0000 by deveiant (r55) -----
|
18
|
+
Changed: README
|
19
|
+
Rakefile
|
20
|
+
utils.rb
|
21
|
+
project.yml
|
22
|
+
spec/pluginfactory_spec.rb
|
23
|
+
|
24
|
+
Start of fixes for 1.9.1.
|
25
|
+
|
26
|
+
|
1
27
|
-- Wed, 13 Aug 2008 21:58:41 -0000 by deveiant (r52) -----
|
2
28
|
Changed: lib/pluginfactory.rb
|
3
29
|
Rakefile
|
data/README
CHANGED
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# Based on various other Rakefiles, especially one by Ben Bleything
|
6
6
|
#
|
7
|
-
# Copyright (c)
|
7
|
+
# Copyright (c) 2007-2009 The FaerieMUD Consortium
|
8
8
|
#
|
9
9
|
# Authors:
|
10
10
|
# * Michael Granger <ged@FaerieMUD.org>
|
@@ -21,39 +21,55 @@ BEGIN {
|
|
21
21
|
$LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
|
22
22
|
}
|
23
23
|
|
24
|
-
|
25
24
|
require 'rbconfig'
|
26
|
-
require 'rubygems'
|
27
25
|
require 'rake'
|
28
26
|
require 'rake/rdoctask'
|
29
27
|
require 'rake/testtask'
|
30
28
|
require 'rake/packagetask'
|
31
29
|
require 'rake/clean'
|
30
|
+
require 'rake/191_compat.rb'
|
32
31
|
|
33
32
|
$dryrun = false
|
34
33
|
|
35
34
|
### Config constants
|
36
35
|
BASEDIR = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd )
|
36
|
+
BINDIR = BASEDIR + 'bin'
|
37
37
|
LIBDIR = BASEDIR + 'lib'
|
38
38
|
EXTDIR = BASEDIR + 'ext'
|
39
39
|
DOCSDIR = BASEDIR + 'docs'
|
40
40
|
PKGDIR = BASEDIR + 'pkg'
|
41
|
+
DATADIR = BASEDIR + 'data'
|
41
42
|
|
42
|
-
|
43
|
+
PROJECT_NAME = 'PluginFactory'
|
44
|
+
PKG_NAME = PROJECT_NAME.downcase
|
43
45
|
PKG_SUMMARY = 'A mixin for making plugin classes'
|
46
|
+
|
44
47
|
VERSION_FILE = LIBDIR + 'pluginfactory.rb'
|
45
|
-
|
48
|
+
if VERSION_FILE.exist? && buildrev = ENV['CC_BUILD_LABEL']
|
49
|
+
PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ] + '.' + buildrev
|
50
|
+
elsif VERSION_FILE.exist?
|
51
|
+
PKG_VERSION = VERSION_FILE.read[ /VERSION\s*=\s*['"](\d+\.\d+\.\d+)['"]/, 1 ]
|
52
|
+
else
|
53
|
+
PKG_VERSION = '0.0.0'
|
54
|
+
end
|
55
|
+
|
46
56
|
PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}"
|
47
57
|
GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem"
|
48
58
|
|
59
|
+
EXTCONF = EXTDIR + 'extconf.rb'
|
60
|
+
|
49
61
|
ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || 'artifacts' )
|
50
62
|
|
51
63
|
TEXT_FILES = %w( Rakefile ChangeLog README LICENSE ).collect {|filename| BASEDIR + filename }
|
64
|
+
BIN_FILES = Pathname.glob( BINDIR + '*' ).delete_if {|item| item =~ /\.svn/ }
|
52
65
|
LIB_FILES = Pathname.glob( LIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ }
|
53
66
|
EXT_FILES = Pathname.glob( EXTDIR + '**/*.{c,h,rb}' ).delete_if {|item| item =~ /\.svn/ }
|
67
|
+
DATA_FILES = Pathname.glob( DATADIR + '**/*' ).delete_if {|item| item =~ /\.svn/ }
|
54
68
|
|
55
69
|
SPECDIR = BASEDIR + 'spec'
|
56
|
-
|
70
|
+
SPECLIBDIR = SPECDIR + 'lib'
|
71
|
+
SPEC_FILES = Pathname.glob( SPECDIR + '**/*_spec.rb' ).delete_if {|item| item =~ /\.svn/ } +
|
72
|
+
Pathname.glob( SPECLIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ }
|
57
73
|
|
58
74
|
TESTDIR = BASEDIR + 'tests'
|
59
75
|
TEST_FILES = Pathname.glob( TESTDIR + '**/*.tests.rb' ).delete_if {|item| item =~ /\.svn/ }
|
@@ -68,8 +84,10 @@ EXTRA_PKGFILES = []
|
|
68
84
|
RELEASE_FILES = TEXT_FILES +
|
69
85
|
SPEC_FILES +
|
70
86
|
TEST_FILES +
|
87
|
+
BIN_FILES +
|
71
88
|
LIB_FILES +
|
72
89
|
EXT_FILES +
|
90
|
+
DATA_FILES +
|
73
91
|
RAKE_TASKLIBS +
|
74
92
|
EXTRA_PKGFILES
|
75
93
|
|
@@ -107,12 +125,14 @@ SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}"
|
|
107
125
|
SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem"
|
108
126
|
|
109
127
|
# Documentation constants
|
128
|
+
RDOCDIR = DOCSDIR + 'api'
|
110
129
|
RDOC_OPTIONS = [
|
111
130
|
'-w', '4',
|
112
131
|
'-SHN',
|
113
132
|
'-i', '.',
|
114
133
|
'-m', 'README',
|
115
|
-
'-
|
134
|
+
'-t', PKG_NAME,
|
135
|
+
'-W', 'http://deveiate.org/projects/PluginFactory/browser/trunk/'
|
116
136
|
]
|
117
137
|
|
118
138
|
# Release constants
|
@@ -120,10 +140,11 @@ SMTP_HOST = 'mail.faeriemud.org'
|
|
120
140
|
SMTP_PORT = 465 # SMTP + SSL
|
121
141
|
|
122
142
|
# Project constants
|
123
|
-
PROJECT_HOST = 'deveiate
|
124
|
-
PROJECT_PUBDIR =
|
143
|
+
PROJECT_HOST = 'deveiate'
|
144
|
+
PROJECT_PUBDIR = '/usr/local/www/public/code'
|
125
145
|
PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}"
|
126
|
-
|
146
|
+
PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}"
|
147
|
+
PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}"
|
127
148
|
|
128
149
|
# Rubyforge stuff
|
129
150
|
RUBYFORGE_GROUP = 'deveiate'
|
@@ -133,6 +154,22 @@ RUBYFORGE_PROJECT = 'pluginfactory'
|
|
133
154
|
DEPENDENCIES = {
|
134
155
|
}
|
135
156
|
|
157
|
+
# Developer Gem dependencies: gemname => version
|
158
|
+
DEVELOPMENT_DEPENDENCIES = {
|
159
|
+
'amatch' => '>= 0.2.3',
|
160
|
+
'rake' => '>= 0.8.1',
|
161
|
+
'rcodetools' => '>= 0.7.0.0',
|
162
|
+
'rcov' => '>= 0',
|
163
|
+
'RedCloth' => '>= 4.0.3',
|
164
|
+
'rspec' => '>= 0',
|
165
|
+
'rubyforge' => '>= 0',
|
166
|
+
'termios' => '>= 0',
|
167
|
+
'text-format' => '>= 1.0.0',
|
168
|
+
'tmail' => '>= 1.2.3.1',
|
169
|
+
'ultraviolet' => '>= 0.10.2',
|
170
|
+
'libxml-ruby' => '>= 0.8.3',
|
171
|
+
}
|
172
|
+
|
136
173
|
# Non-gem requirements: packagename => version
|
137
174
|
REQUIREMENTS = {
|
138
175
|
}
|
@@ -143,13 +180,13 @@ GEMSPEC = Gem::Specification.new do |gem|
|
|
143
180
|
gem.version = PKG_VERSION
|
144
181
|
|
145
182
|
gem.summary = PKG_SUMMARY
|
146
|
-
gem.description =
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
183
|
+
gem.description = [
|
184
|
+
"PluginFactory is a mixin module that turns an including class into a factory for",
|
185
|
+
"its derivatives, capable of searching for and loading them by name. This is",
|
186
|
+
"useful when you have an abstract base class which defines an interface and basic",
|
187
|
+
"functionality for a part of a larger system, and a collection of subclasses",
|
188
|
+
"which implement the interface for different underlying functionality.",
|
189
|
+
].join( "\n" )
|
153
190
|
|
154
191
|
gem.authors = 'Michael Granger'
|
155
192
|
gem.email = 'ged@FaerieMUD.org'
|
@@ -158,6 +195,15 @@ GEMSPEC = Gem::Specification.new do |gem|
|
|
158
195
|
|
159
196
|
gem.has_rdoc = true
|
160
197
|
gem.rdoc_options = RDOC_OPTIONS
|
198
|
+
gem.extra_rdoc_files = %w[ChangeLog README LICENSE]
|
199
|
+
|
200
|
+
gem.bindir = BINDIR.relative_path_from(BASEDIR).to_s
|
201
|
+
gem.executables = BIN_FILES.select {|pn| pn.executable? }.
|
202
|
+
collect {|pn| pn.relative_path_from(BINDIR).to_s }
|
203
|
+
|
204
|
+
if EXTCONF.exist?
|
205
|
+
gem.extensions << EXTCONF.relative_path_from( BASEDIR ).to_s
|
206
|
+
end
|
161
207
|
|
162
208
|
gem.files = RELEASE_FILES.
|
163
209
|
collect {|f| f.relative_path_from(BASEDIR).to_s }
|
@@ -166,7 +212,15 @@ GEMSPEC = Gem::Specification.new do |gem|
|
|
166
212
|
|
167
213
|
DEPENDENCIES.each do |name, version|
|
168
214
|
version = '>= 0' if version.length.zero?
|
169
|
-
gem.
|
215
|
+
gem.add_runtime_dependency( name, version )
|
216
|
+
end
|
217
|
+
|
218
|
+
# Developmental dependencies don't work as of RubyGems 1.2.0
|
219
|
+
unless Gem::Version.new( Gem::RubyGemsVersion ) <= Gem::Version.new( "1.2.0" )
|
220
|
+
DEVELOPMENT_DEPENDENCIES.each do |name, version|
|
221
|
+
version = '>= 0' if version.length.zero?
|
222
|
+
gem.add_development_dependency( name, version )
|
223
|
+
end
|
170
224
|
end
|
171
225
|
|
172
226
|
REQUIREMENTS.each do |name, version|
|
@@ -174,6 +228,9 @@ GEMSPEC = Gem::Specification.new do |gem|
|
|
174
228
|
end
|
175
229
|
end
|
176
230
|
|
231
|
+
# Manual-generation config
|
232
|
+
MANUALDIR = DOCSDIR + 'manual'
|
233
|
+
|
177
234
|
$trace = Rake.application.options.trace ? true : false
|
178
235
|
$dryrun = Rake.application.options.dryrun ? true : false
|
179
236
|
|
@@ -229,13 +286,16 @@ end
|
|
229
286
|
|
230
287
|
### Task: cruise (Cruisecontrol task)
|
231
288
|
desc "Cruisecontrol build"
|
232
|
-
task :cruise => [:clean, :
|
289
|
+
task :cruise => [:clean, 'spec:quiet', :package] do |task|
|
233
290
|
raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty?
|
234
|
-
artifact_dir = ARTIFACTS_DIR.cleanpath
|
291
|
+
artifact_dir = ARTIFACTS_DIR.cleanpath + ENV['CC_BUILD_LABEL']
|
235
292
|
artifact_dir.mkpath
|
236
293
|
|
237
|
-
|
238
|
-
|
294
|
+
coverage = BASEDIR + 'coverage'
|
295
|
+
if coverage.exist? && coverage.directory?
|
296
|
+
$stderr.puts "Copying coverage stats..."
|
297
|
+
FileUtils.cp_r( 'coverage', artifact_dir )
|
298
|
+
end
|
239
299
|
|
240
300
|
$stderr.puts "Copying packages..."
|
241
301
|
FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir )
|
data/lib/pluginfactory.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby -w
|
2
2
|
|
3
|
+
require 'logger'
|
4
|
+
|
3
5
|
### An exception class for PluginFactory specific errors.
|
4
6
|
class FactoryError < RuntimeError; end
|
5
7
|
|
@@ -21,9 +23,7 @@ class FactoryError < RuntimeError; end
|
|
21
23
|
#
|
22
24
|
# == Creation Argument Variants
|
23
25
|
#
|
24
|
-
# The +create+ class method added to your class by PluginFactory searches for
|
25
|
-
# your module using the $LOAD_PATH that require uses. See the README for a
|
26
|
-
# detailed explanation.
|
26
|
+
# The +create+ class method added to your class by PluginFactory searches for your module using
|
27
27
|
#
|
28
28
|
# == Synopsis
|
29
29
|
#
|
@@ -65,7 +65,7 @@ class FactoryError < RuntimeError; end
|
|
65
65
|
#
|
66
66
|
# == Subversion ID
|
67
67
|
#
|
68
|
-
# $Id: pluginfactory.rb
|
68
|
+
# $Id: pluginfactory.rb 57 2009-02-25 17:50:55Z deveiant $
|
69
69
|
#
|
70
70
|
# == Authors
|
71
71
|
#
|
@@ -80,23 +80,52 @@ class FactoryError < RuntimeError; end
|
|
80
80
|
#
|
81
81
|
module PluginFactory
|
82
82
|
|
83
|
-
VERSION = '1.0.
|
83
|
+
VERSION = '1.0.4'
|
84
84
|
|
85
85
|
|
86
|
-
###
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
### Logging
|
87
|
+
@default_logger = Logger.new( $stderr )
|
88
|
+
@default_logger.level = $DEBUG ? Logger::DEBUG : Logger::WARN
|
89
|
+
|
90
|
+
@logger = @default_logger
|
91
|
+
|
92
|
+
|
90
93
|
class << self
|
91
|
-
|
94
|
+
# The logger that will be used when the logging subsystem is reset
|
95
|
+
attr_accessor :default_logger
|
96
|
+
|
97
|
+
# The logger that's currently in effect
|
98
|
+
attr_accessor :logger
|
99
|
+
alias_method :log, :logger
|
100
|
+
alias_method :log=, :logger=
|
92
101
|
end
|
93
102
|
|
94
|
-
|
95
|
-
###
|
96
|
-
###
|
97
|
-
|
98
|
-
|
99
|
-
|
103
|
+
|
104
|
+
### Deprecated: use the Logger object at #log to manipulate logging instead of this
|
105
|
+
### method.
|
106
|
+
def self::logger_callback=( callback )
|
107
|
+
if callback.nil?
|
108
|
+
self.logger.formatter = nil
|
109
|
+
else
|
110
|
+
self.logger.formatter = lambda {|lvl, _, _, msg|
|
111
|
+
callback.call(lvl.downcase.to_sym, msg)
|
112
|
+
''
|
113
|
+
}
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
### Reset the global logger object to the default
|
119
|
+
def self::reset_logger
|
120
|
+
self.logger = self.default_logger
|
121
|
+
self.logger.level = Logger::WARN
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
### Returns +true+ if the global logger has not been set to something other than
|
126
|
+
### the default one.
|
127
|
+
def self::using_default_logger?
|
128
|
+
return self.logger == self.default_logger
|
100
129
|
end
|
101
130
|
|
102
131
|
|
@@ -122,7 +151,8 @@ module PluginFactory
|
|
122
151
|
### the class name.
|
123
152
|
def derivatives
|
124
153
|
ancestors.each do |klass|
|
125
|
-
if klass.instance_variables.include?(
|
154
|
+
if klass.instance_variables.include?( :@derivatives ) ||
|
155
|
+
klass.instance_variables.include?( "@derivatives" )
|
126
156
|
return klass.instance_variable_get( :@derivatives )
|
127
157
|
end
|
128
158
|
end
|
@@ -133,7 +163,8 @@ module PluginFactory
|
|
133
163
|
def factory_type
|
134
164
|
base = nil
|
135
165
|
self.ancestors.each do |klass|
|
136
|
-
if klass.instance_variables.include?(
|
166
|
+
if klass.instance_variables.include?( :@derivatives ) ||
|
167
|
+
klass.instance_variables.include?( "@derivatives" )
|
137
168
|
base = klass
|
138
169
|
break
|
139
170
|
end
|
@@ -154,17 +185,26 @@ module PluginFactory
|
|
154
185
|
### Inheritance callback -- Register subclasses in the derivatives hash
|
155
186
|
### so that ::create knows about them.
|
156
187
|
def inherited( subclass )
|
157
|
-
keys = [ subclass
|
158
|
-
|
159
|
-
#
|
160
|
-
if subclass.name
|
161
|
-
|
188
|
+
keys = [ subclass ]
|
189
|
+
|
190
|
+
# If it's not an anonymous class, make some keys out of variants of its name
|
191
|
+
if subclass.name
|
192
|
+
simple_name = subclass.name.sub( /#<Class:0x[[:xdigit:]]+>::/i, '' )
|
193
|
+
keys << simple_name << simple_name.downcase
|
194
|
+
|
195
|
+
# Handle class names like 'FooBar' for 'Bar' factories.
|
196
|
+
PluginFactory.log.debug "Inherited %p for %p-type plugins" % [ subclass, self.factory_type ]
|
197
|
+
if subclass.name.match( /(?:.*::)?(\w+)(?:#{self.factory_type})/i )
|
198
|
+
keys << Regexp.last_match[1].downcase
|
199
|
+
else
|
200
|
+
keys << subclass.name.sub( /.*::/, '' ).downcase
|
201
|
+
end
|
162
202
|
else
|
163
|
-
|
203
|
+
PluginFactory.log.debug " no name-based variants for anonymous subclass %p" % [ subclass ]
|
164
204
|
end
|
165
205
|
|
166
|
-
keys.uniq.each do |key|
|
167
|
-
PluginFactory.log
|
206
|
+
keys.compact.uniq.each do |key|
|
207
|
+
PluginFactory.log.info "Registering %s derivative of %s as %p" %
|
168
208
|
[ subclass.name, self.name, key ]
|
169
209
|
self.derivatives[ key ] = subclass
|
170
210
|
end
|
@@ -245,7 +285,7 @@ module PluginFactory
|
|
245
285
|
### require line is tried with both <tt>'foo/'</tt> and <tt>'bar/'</tt>
|
246
286
|
### prepended to it.
|
247
287
|
def load_derivative( class_name )
|
248
|
-
PluginFactory.log
|
288
|
+
PluginFactory.log.debug "Loading derivative #{class_name}"
|
249
289
|
|
250
290
|
# Get the unique part of the derived class name and try to
|
251
291
|
# load it from one of the derivative subdirs, if there are
|
@@ -261,7 +301,7 @@ module PluginFactory
|
|
261
301
|
self.factory_type,
|
262
302
|
class_name.downcase,
|
263
303
|
]
|
264
|
-
PluginFactory.log
|
304
|
+
PluginFactory.log.error( errmsg )
|
265
305
|
raise FactoryError, errmsg, caller(3)
|
266
306
|
end
|
267
307
|
end
|
@@ -303,7 +343,7 @@ module PluginFactory
|
|
303
343
|
end
|
304
344
|
|
305
345
|
subdirs = [ subdirs ] unless subdirs.is_a?( Array )
|
306
|
-
PluginFactory.log
|
346
|
+
PluginFactory.log.debug "Subdirs are: %p" % [subdirs]
|
307
347
|
fatals = []
|
308
348
|
tries = []
|
309
349
|
|
@@ -311,7 +351,7 @@ module PluginFactory
|
|
311
351
|
# module.
|
312
352
|
subdirs.collect {|dir| dir.strip}.each do |subdir|
|
313
353
|
self.make_require_path( mod_name, subdir ).each do |path|
|
314
|
-
PluginFactory.log
|
354
|
+
PluginFactory.log.debug "Trying #{path}..."
|
315
355
|
tries << path
|
316
356
|
|
317
357
|
# Try to require the module, saving errors and jumping
|
@@ -319,22 +359,20 @@ module PluginFactory
|
|
319
359
|
begin
|
320
360
|
require( path.untaint )
|
321
361
|
rescue LoadError => err
|
322
|
-
PluginFactory.log :
|
323
|
-
"No module at '%s', trying the next alternative: '%s'" %
|
362
|
+
PluginFactory.log.debug "No module at '%s', trying the next alternative: '%s'" %
|
324
363
|
[ path, err.message ]
|
325
364
|
rescue Exception => err
|
326
365
|
fatals << err
|
327
|
-
PluginFactory.log :
|
328
|
-
"Found '#{path}', but encountered an error: %s\n\t%s" %
|
366
|
+
PluginFactory.log.error "Found '#{path}', but encountered an error: %s\n\t%s" %
|
329
367
|
[ err.message, err.backtrace.join("\n\t") ]
|
330
368
|
else
|
331
|
-
PluginFactory.log
|
369
|
+
PluginFactory.log.info "Loaded '#{path}' without error."
|
332
370
|
return path
|
333
371
|
end
|
334
372
|
end
|
335
373
|
end
|
336
374
|
|
337
|
-
PluginFactory.log
|
375
|
+
PluginFactory.log.debug "fatals = %p" % [ fatals ]
|
338
376
|
|
339
377
|
# Re-raise is there was a file found, but it didn't load for
|
340
378
|
# some reason.
|
@@ -344,10 +382,10 @@ module PluginFactory
|
|
344
382
|
mod_name,
|
345
383
|
tries
|
346
384
|
]
|
347
|
-
PluginFactory.log
|
385
|
+
PluginFactory.log.error( errmsg )
|
348
386
|
raise FactoryError, errmsg
|
349
387
|
else
|
350
|
-
PluginFactory.log
|
388
|
+
PluginFactory.log.debug "Re-raising first fatal error"
|
351
389
|
Kernel.raise( fatals.first )
|
352
390
|
end
|
353
391
|
end
|
@@ -379,7 +417,7 @@ module PluginFactory
|
|
379
417
|
path.collect! {|m| File.join(subdir, m)}
|
380
418
|
end
|
381
419
|
|
382
|
-
PluginFactory.log
|
420
|
+
PluginFactory.log.debug "Path is: #{path.uniq.reverse.inspect}..."
|
383
421
|
return path.uniq.reverse
|
384
422
|
end
|
385
423
|
alias_method :makeRequirePath, :make_require_path
|