While convalescing from a recent surgery, I had a flash of insight. One can view the Internet and a file system as one big, really big, Hash.

What is a Hash if not a way to access a value referenced by a key ?

What is a filename ? A key.

What is a URL ? A key.

the_internet.rb
 1 require 'uri'
 2 require 'open-uri'
 3 require 'singleton'
 4 
 5 # Access the Internet through a Hash-like interface
 6 # Code originally written by
 7 #     Fran├žois Beausoleil (francois@teksol.info)
 8 # This code is released in the public domain.
 9 class TheInternet
10   include Singleton
11 
12   def [](url)
13     uri = url.respond_to?(:read) ? url : URI.parse(url)
14     uri.read
15   end
16 
17   def []=(url, value)
18     # POST, PUT or whatever to URL
19   end
20 end

filesystem.rb
 1 require 'singleton'
 2 
 3 # Access the filesystem through a Hash-like interface
 4 # Code originally written by
 5 #     Fran├žois Beausoleil (francois@teksol.info)
 6 # This code is released in the public domain.
 7 class Filesystem
 8   include Singleton
 9 
10   def [](path)
11     File.read(path)
12   end
13 
14   def []=(path, value)
15     File.open(path, 'wb') do |f|
16       f.write(value)
17       # Could do fancy stuff here:
18       # YAMLize value, marshall it, etc.
19     end
20   end
21 end

The above allows us to do very interesting things:

 1 # Copy from the Internet to a local file:
 2 Filesystem.instance['teksol.info/index.html'] =
 3   TheInternet.instance['http://blog.teksol.info/']
 4 
 5 # Given a suitable implementation of TheInternet#[]=,
 6 # we could do:
 7 search_results =
 8   (TheInternet.instance['http://www.google.com/search'] =
 9     {:hl => 'en', :q => 'rails'})

Is this rambling interesting ? Certainly. Is it useful ? You tell me !

DISCLAIMER: The Filesystem object above is full of security holes. It should be implemented in a chrooted, environment, check permissions, etc.

Search

Your Host

A picture of me

I am François Beausoleil, a Ruby on Rails and Scala developer. During the day, I work on Seevibes, a platform to measure social interactions related to TV shows. At night, I am interested many things. Read my biography.

Top Tags

Books I read and recommend

Links

Projects I work on

Projects I worked on