Class: Mongo::Grid::FSBucket::Stream::Write
- Inherits:
-
Object
- Object
- Mongo::Grid::FSBucket::Stream::Write
- Defined in:
- lib/mongo/grid/stream/write.rb
Overview
A stream that writes files to the FSBucket.
Instance Attribute Summary collapse
-
#file_id ⇒ Object
readonly
File_id The id of the file being uploaded.
-
#filename ⇒ String
readonly
Filename The name of the file being uploaded.
-
#fs ⇒ FSBucket
readonly
Fs The fs bucket to which this stream writes.
-
#options ⇒ Hash
readonly
Options The write stream options.
Instance Method Summary collapse
-
#abort ⇒ true
Abort the upload by deleting all chunks already inserted.
-
#close ⇒ BSON::ObjectId, Object
Close the write stream.
-
#closed? ⇒ true, false
Is the stream closed.
-
#initialize(fs, options) ⇒ Write
constructor
Create a stream for writing files to the FSBucket.
-
#write(io) ⇒ Stream::Write
Write to the GridFS bucket from the source stream.
-
#write_concern ⇒ Mongo::WriteConcern
Get the write concern used when uploading.
Constructor Details
#initialize(fs, options) ⇒ Write
Create a stream for writing files to the FSBucket.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/mongo/grid/stream/write.rb', line 67 def initialize(fs, ) @fs = fs @length = 0 @n = 0 @file_id = [:file_id] || BSON::ObjectId.new @options = .dup =begin WriteConcern object support if @options[:write_concern].is_a?(WriteConcern::Base) # Cache the instance so that we do not needlessly reconstruct it. @write_concern = @options[:write_concern] @options[:write_concern] = @write_concern.options end =end @options.freeze @filename = @options[:filename] @open = true end |
Instance Attribute Details
#file_id ⇒ Object (readonly)
Returns file_id The id of the file being uploaded.
33 34 35 |
# File 'lib/mongo/grid/stream/write.rb', line 33 def file_id @file_id end |
#filename ⇒ String (readonly)
Returns filename The name of the file being uploaded.
38 39 40 |
# File 'lib/mongo/grid/stream/write.rb', line 38 def filename @filename end |
#fs ⇒ FSBucket (readonly)
Returns fs The fs bucket to which this stream writes.
28 29 30 |
# File 'lib/mongo/grid/stream/write.rb', line 28 def fs @fs end |
#options ⇒ Hash (readonly)
Returns options The write stream options.
43 44 45 |
# File 'lib/mongo/grid/stream/write.rb', line 43 def @options end |
Instance Method Details
#abort ⇒ true
Abort the upload by deleting all chunks already inserted.
159 160 161 162 |
# File 'lib/mongo/grid/stream/write.rb', line 159 def abort fs.chunks_collection.find({ :files_id => file_id }, @options).delete_many (@open = false) || true end |
#close ⇒ BSON::ObjectId, Object
Close the write stream.
115 116 117 118 119 120 121 |
# File 'lib/mongo/grid/stream/write.rb', line 115 def close ensure_open! update_length files_collection.insert_one(file_info, @options) @open = false file_id end |
#closed? ⇒ true, false
Is the stream closed.
147 148 149 |
# File 'lib/mongo/grid/stream/write.rb', line 147 def closed? !@open end |
#write(io) ⇒ Stream::Write
Write to the GridFS bucket from the source stream.
95 96 97 98 99 100 101 102 103 |
# File 'lib/mongo/grid/stream/write.rb', line 95 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_concern ⇒ Mongo::WriteConcern
Get the write concern used when uploading.
131 132 133 134 135 136 137 |
# File 'lib/mongo/grid/stream/write.rb', line 131 def write_concern @write_concern ||= if wco = @options[:write_concern] || @options[:write] WriteConcern.get(wco) else fs.write_concern end end |