The ultimate frankenstein-like experiment of harnessing OpenURI and MemCached has been completed!
For a number of projects that used openuri, I needed a way to reduce hits on remote services or rest apis, or even speed up the experience on the client end.
Getting it
sudo gem install openuri_memcached
The beast is alive! (Usage, for those not on late hours right now)
Use exactly the same as you would openuri, only.. enable it.
require 'openuri_memcached'
OpenURI::Cache.enable!
open("http://germanforblack.com").read # Slow as a wet week
Quit your app (leave memcached running) and run the same example, it should now happen in less then … some time that is really fast.
Small print options
To get started run your memcached server
$ memcached -d
The default address that this gem will terminate against is localhost:11211, you can change this using:
OpenURI::Cache.host = ['serverone.com:11211', 'servertwo:11211']
The cache defaults to 15 minutes, however this can be changed using:
OpenURI::Cache.expiry = 60 * 10 # Ten long minutes
Let me know if you have any issues with it, or if you have any use for it!
Tags:ruby
I wrote this little diddy a couple of weeks ago; Since then it has sat on my desktop as a constant reminder of the little time I have to do anything with the snippets of crap that I write on a regular basis.
Due to this very reason, its probably better on the web for anyone who was interested in grabbing colours from Kuler, Adobe labs' user submitted colour... thing.
Usage
require 'kuler'
include Kuler
Kuler::recent
=> ["0E2F32", "C1E6B7", "006A69", "AAC593", "236555"]
This will give you an Array of recently posted colours' in hex values, other options are Kuler::rating and Kuler::popular
Having a poke around the Kuler site should show you that no decent API exits, however you can send some query strings to their awfully formatted RSS feed.
Tags:ruby
After reading the comments on
Nate Clarke's article I decided it would be a good idea to republish the
stolen modified script that I found elsewhere (Honestly, I have no idea. If anyone can cite the original author I'll give credit where due)
namespace :db do
desc "Sync your local database with a remote one REMOTE=name_of_database LOCAL=your_local_db"
task :sync do
`ssh domain.com "mysqldump --skip-extended-insert -u db_username -p #{ENV['REMOTE']} | bzip2 " | bzcat | mysql -u root #{ENV['LOCAL'] || "app_development"}`
end
end
The rundown
- We use this almost daily
- Use RSA keys and you'll only need to auth once (for the database)
- I'm using --skip-extended-insert because it will write each query on a new line (for larger databases mysql can be known to crack the shits on a default setup when everything is inserted in a massive chunk)
- Its using bzip to compress it over the wire (sadly, this was the original authors smarts)
Usage
rake db:sync REMOTE=my_db_with_lots_of_data
This is great for testing your app with different versions of data (for ridiculous migrations and such
Tags:ruby
My slides from the Melbourne Ruby User Group, “Modern Javascript” are available in PDF.

Unfortunately no audio was recorded and the slides will make little sense without speech over the top. Hopefully a reference of the talk for those who wanted it.
Tags:ruby
So, I love Hpricot because it feels like an extension of my hand.
Google (and Yahoo) have awesome human searchable queries like “people in china”.
The top most search result will show you the amount of people in china.
I quickly decided that this would be useless; however incredible to show my mad-ill flow with css selectors.
First, grab the gem from Rubyforge using:
sudo gem install google_query
Leap your ass into irb, require the gem and start screwing around
See how you get spanked by the pound
GoogleQuery::Currency.get 'AUD to GBP'
=> 1 U.S. dollar = 0.490484599 British pounds
Population in Melbourne
GoogleQuery::Population.get 'melbourne'
=> Population: 3,850,000 (Est.) (2nd)
Current time in London
GoogleQuery::Time.get 'london'
=> 2:26 PM on Monday, July 30
On the command line
bens-pb:~ ben$ gpop melbourne
=> Population: 3,850,000 (Est.) (2nd)
bens-pb:~ ben$ gtime london
=> 2:26 PM on Monday, July 30
I couldn’t resist naming it gmoney
bens-pb:~ ben$ gmoney AUD GBP
=> 1 Australian dollar = 0.424269178 British pounds
There you have it, my first gem ever.
Some queries may be broken, this could be due to google changing their search results screen or just no damn results.
Tags:ruby