motivation:
- I want to be able to interact w/ YQL storage as easily as I can w/ SQLite on my own machine. Ideally, I’d just like to be able to say storage.use(‘table’).set(‘foo’, ‘bar’) and forget about it.
overview:
- This class is based on the SQLite utility class, YQL utility function, and simple key/val layer for YQL storage I recently posted. The methods available are use(), set(), and get(). The use() method accepts the select, update, and execute addresses of a YQL storage record. Calling get() or set() fires off a request to read or write, respectively, a key using the YQL key/val table.
requirements/environment:
- An “installation” (it’s just a couple static files on your server) of the YQL key/val table mentioned above
- All other requirements are the same as for the SQLite class & YQL fn mentioned above
code:
class YqlStorage def use(settings={}) @settings = settings return self end def get(key) response = yql( %{ use 'http://{your domain}/kv.xml' as kv; select * from kv where key = '%s' and select = '%s' } % [ key, @settings[:select] ] ) if response['error'] raise 'error: %s ' % response['error']['description'] elsif !response['query']['results'] return nil end return response['query']['results']['result'] end def set(key, val) response = yql( %{ insert into kv (key, val) values ('%s', '%s') } % [ key, val ], { 'env' => 'http://{your domain}/kv.env' } ) if response['error'] raise 'YQL error: %s ' % response['error']['description'] end return response end end
usage:
- Save the code below into a file
- Edit the file to change all occurrences of ‘{your domain}’ to your domain
- Use (ha!) the YQL storage addresses defined in the key/val table setup for the use() settings
- here’s some example code
store = YqlStorage.new.use( { # get these from YQL: http://developer.yahoo.com/yql/console/#h=desc%20yql.storage.admin :execute => 'store://h5Y4iRockdwzZdEHvGbBkCe', :select => 'store://deGTN05aNePaper04EOL30W', :update => 'store://qG4Scissors8917SHDjv88Wb' } ) store.set( 'foo', 'bar' ) p store.get( 'foo' )
Please let me know if you’ve got any suggestions/questions.
And now, to lighten the mood, here’s a picture of a squirrel yawning:
Photo credit: _temaki_
Cool, looks like fun 🙂