From: Bill Guindon Date: 2005-03-29T12:12:38+09:00 Subject: Re: ANN: KirbyBase 2.0 On Tue, 29 Mar 2005 10:43:25 +0900, Jamey Cribbs wrote: > I would like to announce version 2.0 of KirbyBase, a small, pure-Ruby, > database management system that stores it's data in plain-text files. > > You can download it at: > http://www.netpromi.com/files/KirbyBase_Ruby_2.0.zip > > You can find out more about KirbyBase for Ruby 2.0 at: > http://www.netpromi.com/kirbybase_ruby.html > > Version 2.0 is a radical departure from the 1.x series. It has been > practically re-written from scratch to be much more "Ruby-ish". The > most dramatic change is in how query's are expressed. To specify a > select query, you can now use a Ruby code block, i.e. anything that can > be converted into a Proc object. For example, if you had a database > table holding data on WWII planes and you wanted to select all United > States planes that had a speed greater than 400mph, the code would look > like: > > plane_tbl.select { |r| r.country =~ /US/ and r. speed > 400 } > > I like doing this much more than building an SQL string. :-) > > Updates, deletes, and inserts work much the same way. A lot of effort > has been put into making the all powerful Ruby code block do a lot of > the heavy lifting. > > I would like to publicly thank Hal Fulton for all of his > input/feedback/suggestions/ideas for version 2.0. Hal was a major > impetus for my getting this version done. Additionally, he was > instrumental in keeping me focused on making this version feel much more > like a part of Ruby. That said, any bugs/design flaws/code inteptitude > is solely my responsibility, not Hal's! > > I hope you give this new version of KirbyBase a try. If you do, please > let me know what you think. Having read the docs, I love the api for it. Very cool stuff :) http://www.netpromi.com/files/kirbybaserubymanual.html Out of curiosity, can you 'declare' sorts to be ascending by using a '+'? Can this: result_set = plane_tbl.select(:name, :country, :speed).sort(:country, -:speed) Be written like this?: result_set = plane_tbl.select(:name, :country, :speed).sort(+:country, -:speed) Also out of curiosity, have you thought about adding indexing? Could just use a different file extension, and rebuild them while 'packing'. > Thanks. > > Jamey Cribbs > jcribbs@twmi.rr.com > > -- Bill Guindon (aka aGorilla)