require_arch.rb
57 lines
| 1.2 KiB
| text/x-ruby
|
RubyLexer
|
r9346 | #:stopdoc: | |
require 'rbconfig' | |||
# Attempts to require anative extension. | |||
# Falls back to pure-ruby version, if it fails. | |||
# | |||
# This uses Config::CONFIG['arch'] from rbconfig. | |||
def require_arch(fname) | |||
arch = Config::CONFIG['arch'] | |||
begin | |||
path = File.join("tmail", arch, fname) | |||
require path | |||
rescue LoadError => e | |||
# try pre-built Windows binaries | |||
if arch =~ /mswin/ | |||
require File.join("tmail", 'mswin32', fname) | |||
else | |||
raise e | |||
end | |||
end | |||
end | |||
# def require_arch(fname) | |||
# dext = Config::CONFIG['DLEXT'] | |||
# begin | |||
# if File.extname(fname) == dext | |||
# path = fname | |||
# else | |||
# path = File.join("tmail","#{fname}.#{dext}") | |||
# end | |||
# require path | |||
# rescue LoadError => e | |||
# begin | |||
# arch = Config::CONFIG['arch'] | |||
# path = File.join("tmail", arch, "#{fname}.#{dext}") | |||
# require path | |||
# rescue LoadError | |||
# case path | |||
# when /i686/ | |||
# path.sub!('i686', 'i586') | |||
# when /i586/ | |||
# path.sub!('i586', 'i486') | |||
# when /i486/ | |||
# path.sub!('i486', 'i386') | |||
# else | |||
# begin | |||
# require fname + '.rb' | |||
# rescue LoadError | |||
# raise e | |||
# end | |||
# end | |||
# retry | |||
# end | |||
# end | |||
# end | |||
#:startdoc: |