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 ⇒ BSON::ObjectId
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.
62 63 64 65 66 67 68 69 70 |
# File 'lib/mongo/grid/stream/write.rb', line 62 def initialize(fs, ) @fs = fs @length = 0 @n = 0 @file_id = BSON::ObjectId.new @options = @filename = @options[:filename] @open = true end |
Instance Attribute Details
#file_id ⇒ BSON::ObjectId (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.
143 144 145 146 |
# File 'lib/mongo/grid/stream/write.rb', line 143 def abort fs.chunks_collection.find(:files_id => file_id).delete_many @open = false || true end |
#close ⇒ BSON::ObjectId, Object
Close the write stream.
102 103 104 105 106 107 108 |
# File 'lib/mongo/grid/stream/write.rb', line 102 def close ensure_open! update_length files_collection.insert_one(file_info) @open = false file_id end |
#closed? ⇒ true, false
Is the stream closed.
131 132 133 |
# File 'lib/mongo/grid/stream/write.rb', line 131 def closed? !@open end |
#write(io) ⇒ Stream::Write
Write to the GridFS bucket from the source stream.
82 83 84 85 86 87 88 89 90 |
# File 'lib/mongo/grid/stream/write.rb', line 82 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.
118 119 120 121 |
# File 'lib/mongo/grid/stream/write.rb', line 118 def write_concern @write_concern ||= @options[:write] ? WriteConcern.get(@options[:write]) : fs.write_concern end |