Thanks for the reply, Sean! And on a Sunday no less. I took your advice and installed the "yajl-ruby" gem. My broken one-liner, below, now works if changed to the following. Merely installing "yajl-ruby" didn't work; I also had to add the " require 'yajl' " line.
Also, this one-liner succeeded without the "parse_json_times = false" line, but I added that per your advice, since it sounds like a good idea anyway. I feel a lot safer parsing my own dates when needed. ruby -e " require 'rubygems'; require 'yajl'; require 'riak'; ActiveSupport.parse_json_times = false; puts Riak::Client.new.bucket('broken').keys" Thanks again, Ted On Oct 24, 2010, at 11:15 AM, Sean Cribbs wrote: > Ted, > > There is a simple fix for this (which I believed was in there already). > First of all, install the json or yajl-ruby gems (the default parsing from > ActiveSupport is bad). Then add this to your script: > > ActiveSupport.parse_json_times = false > > ActiveSupport tries to be smart about parsing strings that look like dates or > times into Date/Time objects. I've found it to be a nuisance, especially in > use-cases like the one you have. > > Sean Cribbs <s...@basho.com> > Developer Advocate > Basho Technologies, Inc. > http://basho.com/ > > On Oct 23, 2010, at 6:51 PM, Ted Behling wrote: > >> Hi, >> >> I am new to Riak but am starting to get familiar with it. I've been going >> through the "Riak Fast Track" tutorial, and am using the riak-client Ruby >> gem. Sadly, I think I have found some broken behavior in the Ruby client. >> I'm hoping maybe the maintainer of the riak-client gem can help? >> >> The issue is that if my Riak keys look like "dates", such as "2010-01-01", >> then if I invoke the "keys" method on a Riak::Bucket object, I get an error. >> Non-date-looking keys work fine. >> >> Here are some commands that reproduce the problem, from an OS X command line: >> >> --------- >> # This successfully creates a new bucket called "broken" and assigns a value >> to the key "2010-01-01" >> $ curl -X PUT -d '{"bar":"baz"}' -H "Content-Type: application/json" >> http://127.0.0.1:8098/riak/broken/2010-01-01 >> >> # I can successfully retrieve the specific key using a Ruby one-liner >> $ ruby -e "require 'rubygems'; require 'riak'; puts >> Riak::Client.new.bucket('broken')['2010-01-01'].data.inspect" >> curb library not found! Please `gem install curb` for better performance. >> {"bar"=>"baz"} >> >> # A Ruby exception results when I list the keys. Note where it's trying to >> invoke "tr" on a Date object, shown here formatted as a different string >> than the Riak key >> $ ruby -e "require 'rubygems'; require 'riak'; puts >> Riak::Client.new.bucket('broken').keys" >> curb library not found! Please `gem install curb` for better performance. >> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/cgi.rb:352:in >> `unescape': undefined method `tr' for Fri, 01 Jan 2010:Date (NoMethodError) >> from >> /Library/Ruby/Gems/1.8/gems/riak-client-0.8.2/lib/riak/bucket.rb:48:in `load' >> from >> /Library/Ruby/Gems/1.8/gems/riak-client-0.8.2/lib/riak/bucket.rb:48:in `map' >> from >> /Library/Ruby/Gems/1.8/gems/riak-client-0.8.2/lib/riak/bucket.rb:48:in `load' >> from >> /Library/Ruby/Gems/1.8/gems/riak-client-0.8.2/lib/riak/bucket.rb:69:in `keys' >> from -e:1 >> --------- >> >> Clearly, something here is trying to be "helpful" by translating the string >> "2010-01-01" to a Date object. This is the wrong behavior, because Riak >> keys are strings and should always be strings. Correct behavior would be to >> not interpret "date-looking" or other "special appearance" strings, and just >> treat all key strings literally. >> >> Here are the relevant software versions I am running: >> Mac OS X 10.6 >> riak-0.13.0-osx-i386 (downloaded from Basho) >> ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] >> Rubygems version 1.3.7 >> riak-client gem, 0.8.2, installed with "gem install riak-client" >> activesupport gem, 2.3.8 >> >> I hope someone can fix this issue. If I can contribute a patch, or you >> would like me to help test a patch, please let me know what's needed. >> >> Best regards, >> >> Ted Behling >> RHCE, Network+ >> t...@tedb.us >> _______________________________________________ >> riak-users mailing list >> riak-users@lists.basho.com >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > _______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com