Class: Mongo::Grid::FSBucket::Stream::Write

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo/grid/stream/write.rb

Overview

A stream that writes files to the FSBucket.

Since:

  • 2.1.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fs, options) ⇒ Write

Create a stream for writing files to the FSBucket.

Examples:

Create the stream.

Stream::Write.new(fs, options)

Parameters:

  • fs (FSBucket)

    The GridFS bucket object.

  • options (Hash)

    The write stream options.

  • opts (Hash)

    a customizable set of options

Since:

  • 2.1.0



63
64
65
66
67
68
69
70
71
# File 'lib/mongo/grid/stream/write.rb', line 63

def initialize(fs, options)
  @fs = fs
  @length = 0
  @n = 0
  @file_id = options[:file_id] || BSON::ObjectId.new
  @options = options
  @filename = @options[:filename]
  @open = true
end

Instance Attribute Details

#file_idObject (readonly)

Returns file_id The id of the file being uploaded.

Returns:

  • (Object)

    file_id The id of the file being uploaded.

Since:

  • 2.1.0



33
34
35
# File 'lib/mongo/grid/stream/write.rb', line 33

def file_id
  @file_id
end

#filenameString (readonly)

Returns filename The name of the file being uploaded.

Returns:

  • (String)

    filename The name of the file being uploaded.

Since:

  • 2.1.0



38
39
40
# File 'lib/mongo/grid/stream/write.rb', line 38

def filename
  @filename
end

#fsFSBucket (readonly)

Returns fs The fs bucket to which this stream writes.

Returns:

  • (FSBucket)

    fs The fs bucket to which this stream writes.

Since:

  • 2.1.0



28
29
30
# File 'lib/mongo/grid/stream/write.rb', line 28

def fs
  @fs
end

#optionsHash (readonly)

Returns options The write stream options.

Returns:

  • (Hash)

    options The write stream options.

Since:

  • 2.1.0



43
44
45
# File 'lib/mongo/grid/stream/write.rb', line 43

def options
  @options
end

Instance Method Details

#aborttrue

Abort the upload by deleting all chunks already inserted.

Examples:

Abort the write operation.

stream.abort

Returns:

  • (true)

    True if the operation was aborted and the stream is closed.

Since:

  • 2.1.0



144
145
146
147
# File 'lib/mongo/grid/stream/write.rb', line 144

def abort
  fs.chunks_collection.find(:files_id => file_id).delete_many
  @open = false || true
end

#closeBSON::ObjectId, Object

Close the write stream.

Examples:

Close the stream.

stream.close

Returns:

  • (BSON::ObjectId, Object)

    The file id.

Raises:

Since:

  • 2.1.0



103
104
105
106
107
108
109
# File 'lib/mongo/grid/stream/write.rb', line 103

def close
  ensure_open!
  update_length
  files_collection.insert_one(file_info)
  @open = false
  file_id
end

#closed?true, false

Is the stream closed.

Examples:

Is the stream closed.

stream.closed?

Returns:

  • (true, false)

    Whether the stream is closed.

Since:

  • 2.1.0



132
133
134
# File 'lib/mongo/grid/stream/write.rb', line 132

def closed?
  !@open
end

#write(io) ⇒ Stream::Write

Write to the GridFS bucket from the source stream.

Examples:

Write to GridFS.

stream.write(io)

Parameters:

  • io (IO)

    The source io stream to upload from.

Returns:

Since:

  • 2.1.0



83
84
85
86
87
88
89
90
91
# File 'lib/mongo/grid/stream/write.rb', line 83

def write(io)
  ensure_open!
  @indexes ||= ensure_indexes!
  @length += io.size
  chunks = File::Chunk.split(io, file_info, @n)
  @n += chunks.size
  chunks_collection.insert_many(chunks) unless chunks.empty?
  self
end

#write_concernMongo::WriteConcern

Get the write concern used when uploading.

Examples:

Get the write concern.

stream.write_concern

Returns:

Since:

  • 2.1.0



119
120
121
122
# File 'lib/mongo/grid/stream/write.rb', line 119

def write_concern
  @write_concern ||= @options[:write] ? WriteConcern.get(@options[:write]) :
    fs.write_concern
end