# File lib/ruote/storage/hash_storage.rb, line 52
    def put (doc, opts={})

      i = @h.size

      synchronize do

        pre = get(doc['type'], doc['_id'])

        #if pre && ( ! opts[:update_rev]) && pre['_rev'] != doc['_rev']
        if pre && pre['_rev'] != doc['_rev']
          return pre
        end

        if pre.nil? && doc['_rev']
          return true
        end

        doc = if opts[:update_rev]
          doc['_rev'] = pre ? pre['_rev'] : -1
          doc
        else
          doc.merge('_rev' => doc['_rev'] || -1)
        end

        doc['put_at'] = Ruote.now_to_utc_s
        doc['_rev'] = doc['_rev'] + 1

        @h[doc['type']][doc['_id']] = Rufus::Json.dup(doc)

        nil
      end
    end