--- Revision 363533633036 +++ Revision 636666333565 @@ -1,89 +1,1 @@ -require 'rubygems' -require 'relaxdb' - -# Specify the db to be used. Create it in CouchDB yourself locally. - -RelaxDB::Database.set_std_db :host => "localhost", :port => 5984, :db => "photos" - -# -# Define the classes -# - -class Photo < RelaxDB::Document - - property :name - property :tags - -end - -class Tag < RelaxDB::Document - - property :name - property :photos - -end - -# -# Create the views -# - -tags_view = < "mg", :name => "Migration").save -des = Photo.new(:_id => "des", :name => "Dar es Salaam").save - -wd = Tag.new(:_id => "wd", :name => "wildebeest").save -tz = Tag.new(:_id => "tz", :name => "tanzania").save - -# Being forced to use ids and set the relationship on both sides is clunky and error -# prone, but it's no more than a current limitation of the library - -mg.tags = [wd._id, tz._id] -des.tags = [tz._id] - -wd.photos = [mg._id] -tz.photos = [mg._id, des._id] - -RelaxDB.bulk_save(mg, des, wd, tz) - -# -# Examine the data, confirm in the CouchDB log that n+1 requests aren't being made -# - -mg = Photo.all_by(:name) { |q| q.key = "Migration"}[0] -mg_tags = Photo.view("all_tags?key=\"#{mg._id}\"") -puts mg_tags.inject("Tags for #{mg.name}") { |m, t| m << " '#{t.name}'" } - -tz = Tag.all_by(:name) { |q| q.key = "tanzania" }[0] -tz_photos = Tag.view("all_photos?key=\"#{tz._id}\"") -puts tz_photos.inject("Photos for #{tz.name}") { |m, p| m << " '#{p.name}'" } +4jcXow onozijbhtwri, [url=http://oozgvgfvifok.com/]oozgvgfvifok[/url], [link=http://vfofaawzccey.com/]vfofaawzccey[/link], http://mgqcvamnixry.com/