Sha256: 277933167177cc06f6a2f1225fa63e44d526a4f3d26b6cc42b0e8ec44d38e106
Contents?: true
Size: 1.96 KB
Versions: 2
Compression:
Stored size: 1.96 KB
Contents
namespace :db do desc "Will create if missing database and add default views" task setup: :environment do VIEW_DOC = { language: "coffeescript", views: { find: { map: "(d)->\n if d._id\n [str, t, id] = d._id.match /([^/]+)[/](.+)/\n emit [t, id], 1 if t and id" } } }.freeze Dolly::Document.database.put "", nil remote_doc = begin JSON.parse Dolly::Document.database.get(Dolly::Document.design_doc).parsed_response rescue Dolly::ResourceNotFound {} end doc = VIEW_DOC.merge remote_doc Dolly::Document.database.put Dolly::Document.design_doc, doc.to_json puts "design document #{Dolly::Document.design_doc} was created/updated." end desc "Will update design document with what is on db/designs/*.coffee" task design: :environment do path = File.join Rails.root, 'db', 'designs' files = Dir.glob("**/*.coffee") views = {} filters = {} files.each do |filename| name, key = File.basename(filename).sub(/.coffee/i, '').split(/\./) key ||= 'map' data = File.read filename if key == 'filter' filters[name] ||= data else views[name] ||= {} views[name][key] = data end end view_doc = { '_id' => Dolly::Document.design_doc, 'language' => 'coffeescript', 'views' => views, 'filters' => filters } begin hash_doc = JSON::parse Dolly::Document.database.get(view_doc["_id"]).parsed_response rev = hash_doc.delete('_rev') if hash_doc == view_doc puts 'everything up to date' else view_doc["_rev"] = rev view_doc["views"].merge!(hash_doc['views']) puts 'updating design document' will_save = true end rescue Dolly::ResourceNotFound puts 'creating design document' will_save = true end Dolly::Document.database.put Dolly::Document.design_doc, view_doc.to_json if will_save end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dolly-0.5.2 | lib/tasks/db.rake |
dolly-0.5.1 | lib/tasks/db.rake |