From: Francis Hwang Date: 2005-11-02T14:42:09+09:00 Subject: Re: urirequire: I got yer Web 2.0 right here Cool! Thanks so much for this. I'll definitely fold this into the next release. Daniel Sheppard wrote: > This'll make uri_require a nice safe place to live.... sort of. > > require 'open-uri' > > module UriRequire > Version = '0.1.1' > > @@orig_require = Kernel.method :require > > def self.orig_require; @@orig_require; end > end > > def require( library_name ) > if library_name =~ /^(http|https|ftp):\/\// > uri_require( library_name ) > else > UriRequire.orig_require.call library_name > end > end > > def uri_require( library_name, expected_digest ) > begin > contents = open( library_name ) do |f| f.gets( nil ); > end > rescue OpenURI::HTTPError > library_name += '.rb' > contents = open( library_name ) do |f| f.gets( nil ); > end > end > require 'digest/sha1' > digest = Digest::SHA1.hexdigest('xx') > if expected_digest > raise "Wrong Hash - Expected '#{expected_digest}', recieved > '#{digest}'" > else > warn "Requiring a uri without a hash? Are you freakin' > crazy?" > warn "The hash is '#{digest}' for '#{library_name}'" > end > eval contents > end > > ##################################################################################### > This email has been scanned by MailMarshal, an email content filter. > #####################################################################################