Class: Libcouchbase::DesignDocs

Inherits:
Object
  • Object
show all
Defined in:
lib/libcouchbase/design_docs.rb

Instance Method Summary collapse

Constructor Details

#initialize(bucket, connection, result_meth, **opts) ⇒ DesignDocs

Returns a new instance of DesignDocs.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/libcouchbase/design_docs.rb', line 5

def initialize(bucket, connection, result_meth, **opts)
    @connection = connection
    @result = result_meth
    @bucket = bucket # This reference is required to keep to the connection alive

    opts[:type] = :management
    result(@connection.http("/pools/default/buckets/#{connection.bucket}/ddocs", **opts).then(proc { |resp|
        @ddocs = if resp.body.length > 0
            JSON.parse(resp.body, Connection::DECODE_OPTIONS)[:rows] || []
        else
            []
        end
    }))
end

Instance Method Details

#design(name) ⇒ Object Also known as: []



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/libcouchbase/design_docs.rb', line 25

def design(name)
    name = name.to_s
    
    des = nil
    short = nil

    @ddocs.each do |row|
        full = row[:doc][:meta][:id]
        short = full[8..-1]

        if [short, full].include? name
            des = row[:doc]
            break
        end
    end

    des ? DesignDoc.new(short, des, @bucket, @connection, @result) : nil
end

#designsObject



20
21
22
23
# File 'lib/libcouchbase/design_docs.rb', line 20

def designs
    # Remove '_design/' from the id string
    @ddocs.map { |row| row[:doc][:meta][:id][8..-1] }
end