Module: Cushion

Defined in:
lib/cushion.rb,
lib/cushion/design.rb,
lib/cushion/server.rb,
lib/cushion/database.rb,
lib/cushion/document.rb

Defined Under Namespace

Modules: Meta Classes: Database, Design, Document, Server

Constant Summary collapse

VERSION =
'0.6.0'

Class Method Summary collapse

Class Method Details

.base64(data) ⇒ Object



90
91
92
# File 'lib/cushion.rb', line 90

def base64(data)
  Base64.encode64(data).gsub(/\s/,'')
end

.db(url) ⇒ Object Also known as: database

Returns a Cushion::Database instance rooted at url. Does not attempt to create the database on the server.



36
37
38
39
40
# File 'lib/cushion.rb', line 36

def db(url)
  parsed = parse(url)
  server = Cushion.new(:uri => parsed[:host])
  server.db(parsed[:db])
end

.db!(url) ⇒ Object Also known as: database!

Creates a database at url if it does not exist. Returns a Cushion::Database instance.



45
46
47
48
49
# File 'lib/cushion.rb', line 45

def db!(url)
  parsed = parse(url)
  server = Cushion.new(:uri => parsed[:host])
  server.db!(parsed[:db])
end

.encode_attachments(attachments) ⇒ Object

Base64 encodes inline attachments.



82
83
84
85
86
87
88
# File 'lib/cushion.rb', line 82

def encode_attachments(attachments)
  attachments.each do |k,v|
    next if v['stub']
    v['data'] = base64(v['data'])
  end
  attachments
end

.escape_key(id, filename = nil) ⇒ Object

Handles key escaping.



73
74
75
76
77
78
79
# File 'lib/cushion.rb', line 73

def escape_key(id, filename = nil)
  if filename
    "#{escape_docid(id)}/#{CGI.escape(filename)}"
  else
    escape_docid(id)
  end
end

.paramify_url(url, params = {}) ⇒ Object

Utility method for converting parameters into url query strings.



61
62
63
64
65
66
67
68
69
70
# File 'lib/cushion.rb', line 61

def paramify_url(url, params = {})
  if params && !params.empty?
    query = params.collect do |k,v|
      v = v.to_json if %w{key startkey endkey}.include?(k.to_s)
      "#{k}=#{CGI.escape(v.to_s)}"
    end.join("&")
    url = "#{url}?#{query}"
  end
  url
end

.proxy(url) ⇒ Object

Sets the RestClient proxy.



95
96
97
# File 'lib/cushion.rb', line 95

def proxy(url)
  RestClient.proxy = url
end

.recreate(url) ⇒ Object

Drops and recreates a database at url, returning a Cushion::Database instance.



54
55
56
57
58
# File 'lib/cushion.rb', line 54

def recreate(url)
  parsed = parse(url)
  server = Cushion.new(:uri => parsed[:host])
  server.recreate(parsed[:db])
end

.server(options = {}) ⇒ Object Also known as: new

Returns a Cushion::Server instance.



29
30
31
# File 'lib/cushion.rb', line 29

def server(options = {})
  Server.new(options)
end