[ANN] urirequire: I got yer Web 2.0 right here

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.
#####################################################################################

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.
#####################################################################################