JRubyで相対パスを含む場合に、Jarファイルの中のファイルを読めるようにするためのモンキーパッチの最新版です。
1 def cleanup_path(path) 2 if path.to_s.match(/^file:/) && path.is_a?(String) 3 jar_path, inner_path = path.split('!', 2) 4 inner_path = File.expand_pat h(inner_path ) 5 path = [jar_path, inner_path ].join('!') 6 end 7 path 8 end 9 10 alias :require_or iginal :require 11 def require(path) 12 require_or iginal cleanup_pa th(path) 13 rescue Exception => e 14 raise e unless path.to_s.match(/^file:/) 15 end 16 17 alias :load_origi nal :load 18 def load(path) 19 load_origi nal cleanup_pa th(path) 20 rescue Exception => e 21 raise e unless path.to_s.match(/^file:/) 22 end 23 24 class Dir 25 class << self 26 alias :aref_origi nal :[] 27 def [](*args) 28 aref_origi nal *(args.map{|path| cleanup_pa th(path)}) 29 end 30 end 31 end 32 class File 33 class << self 34 alias :mtime_orig inal :mtime 35 def mtime(path) 36 if path.match(/^file:/) 37 jar_file, = path.split('!', 2) 38 path = jar_file.sub(/^file:/, '') 39 end 40 mtime_orig inal(path) 41 end 42 end 43 end
posted by
genki
on Tue 21 Apr 2009
at 02:43