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.
63 64 65 66 67 68 69 70 71 |
# File 'lib/mongo/grid/stream/write.rb', line 63 def initialize(fs, ) @fs = fs @length = 0 @n = 0 @file_id = [:file_id] || BSON::ObjectId.new @options = @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.
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 |
#close ⇒ BSON::ObjectId, Object
Close the write stream.
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.
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.
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_concern ⇒ Mongo::WriteConcern
Get the write concern used when uploading.
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 |