mongoid-grid_fs 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/LICENSE +3 -0
- data/README.md +6 -14
- data/Rakefile +6 -5
- data/lib/mongoid-grid_fs.rb +28 -21
- data/mongoid-grid_fs.gemspec +5 -4
- data/test/helper.rb +5 -0
- data/test/mongoid-grid_fs_test.rb +37 -9
- metadata +21 -8
- data/Gemfile +0 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzQ5NjI1MDZlZmExMmYyNGRjNjRkMTlhZDk5ZDg3YzBjYzI0MmYzOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWY5ZWNmNTgzZjg4YzFmM2UwYjg5MjkyZTY0ZTYyZWY3MjFiZTJkYg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTlhNDFiNGQxNTllYTIyZTVhM2U2NjdkNzc0NzA0ODk1ZDE3ODk1MzNkMWJm
|
10
|
+
YTQ1YzNkZThjYjg5OGQ0ZDVmYzY4NGEwY2M2NzY5NTMyY2NjMDI3OWMzNDFi
|
11
|
+
ZjI3ZmI3NTY5YWNiNmIxNmFkYjdmZTgwNGNhNzU5OTIzNTZiNzU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDczNzdlNDY5NDZkMDI3M2UwMDdmNjI2NzhlYjlmMDA0Y2IwNWRiNzY1YWU4
|
14
|
+
N2QwMjM5YWY3ZDk3NWM5YjVkN2NkYjEzYmU2MmU3MzJjN2U5MzZlNjU5YjU2
|
15
|
+
Zjc1ZGQyZTcxMmU4ZjczNTFkZDhmMTNkMWQzYzFlMjU1MTk4NTQ=
|
data/LICENSE
ADDED
data/README.md
CHANGED
@@ -10,20 +10,12 @@ SYNOPSIS
|
|
10
10
|
--------
|
11
11
|
|
12
12
|
````ruby
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
g = g.id
|
21
|
-
|
22
|
-
grid_fs.get(id)
|
23
|
-
|
24
|
-
grid_fs.delete(id)
|
25
|
-
|
26
|
-
|
13
|
+
require 'mongoid-grid_fs'
|
14
|
+
grid_fs = Mongoid::GridFs
|
15
|
+
g = grid_fs.put(readable)
|
16
|
+
id = g.id
|
17
|
+
grid_fs.get(id)
|
18
|
+
grid_fs.delete(id)
|
27
19
|
````
|
28
20
|
|
29
21
|
DESCRIPTION
|
data/Rakefile
CHANGED
@@ -68,10 +68,10 @@ end
|
|
68
68
|
|
69
69
|
task :gemspec do
|
70
70
|
ignore_extensions = ['git', 'svn', 'tmp', /sw./, 'bak', 'gem']
|
71
|
-
ignore_directories = ['pkg', 'db']
|
72
|
-
ignore_files = ['test/log', 'test/db.yml', 'a.rb', 'b.rb'] + Dir['
|
71
|
+
ignore_directories = ['pkg', 'db', 'vendor', 'gemfiles']
|
72
|
+
ignore_files = ['test/log', 'test/db.yml', 'a.rb', 'b.rb'] + Dir['Gemfile*'] + %w'db'
|
73
73
|
|
74
|
-
shiteless =
|
74
|
+
shiteless =
|
75
75
|
lambda do |list|
|
76
76
|
list.delete_if do |entry|
|
77
77
|
next unless test(?e, entry)
|
@@ -79,9 +79,8 @@ task :gemspec do
|
|
79
79
|
ignore_extensions.any?{|ext| ext === extension}
|
80
80
|
end
|
81
81
|
list.delete_if do |entry|
|
82
|
-
next unless test(?d, entry)
|
83
82
|
dirname = File.expand_path(entry)
|
84
|
-
ignore_directories.any?{|dir| File.expand_path(dir)
|
83
|
+
ignore_directories.any?{|dir| dirname.include?(File.expand_path(dir)) }
|
85
84
|
end
|
86
85
|
list.delete_if do |entry|
|
87
86
|
next unless test(?f, entry)
|
@@ -99,6 +98,7 @@ task :gemspec do
|
|
99
98
|
test_files = test(?e, "test/#{ lib }.rb") ? "test/#{ lib }.rb" : nil
|
100
99
|
summary = This.summary || This.synopsis || "#{ lib } kicks the ass"
|
101
100
|
description = This.description || summary
|
101
|
+
license = 'Ruby'
|
102
102
|
|
103
103
|
if This.extensions.nil?
|
104
104
|
This.extensions = []
|
@@ -136,6 +136,7 @@ task :gemspec do
|
|
136
136
|
spec.platform = Gem::Platform::RUBY
|
137
137
|
spec.summary = <%= lib.inspect %>
|
138
138
|
spec.description = <%= description.inspect %>
|
139
|
+
spec.license = <%= license.inspect %>
|
139
140
|
|
140
141
|
spec.files =\n<%= files.sort.pretty_inspect %>
|
141
142
|
spec.executables = <%= executables.inspect %>
|
data/lib/mongoid-grid_fs.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
module Mongoid
|
4
4
|
class GridFS
|
5
|
-
const_set :Version, '1.9.
|
5
|
+
const_set :Version, '1.9.1'
|
6
6
|
|
7
7
|
class << GridFS
|
8
8
|
def version
|
@@ -11,8 +11,8 @@
|
|
11
11
|
|
12
12
|
def dependencies
|
13
13
|
{
|
14
|
-
'mongoid' => [ 'mongoid' , '
|
15
|
-
'mime/types' => [ 'mime-types' , '
|
14
|
+
'mongoid' => [ 'mongoid' , '>= 3.0', '< 5.0' ] ,
|
15
|
+
'mime/types' => [ 'mime-types' , '>= 1.19', '< 2.0'] ,
|
16
16
|
}
|
17
17
|
end
|
18
18
|
|
@@ -82,7 +82,7 @@
|
|
82
82
|
[]=
|
83
83
|
clear
|
84
84
|
)
|
85
|
-
|
85
|
+
|
86
86
|
to_delegate.each do |method|
|
87
87
|
class_eval <<-__
|
88
88
|
def self.#{ method }(*args, &block)
|
@@ -214,13 +214,11 @@
|
|
214
214
|
raise
|
215
215
|
end
|
216
216
|
|
217
|
-
|
218
|
-
|
217
|
+
def binary_for(*buf)
|
218
|
+
if defined?(Moped::BSON)
|
219
219
|
Moped::BSON::Binary.new(:generic, buf.join)
|
220
|
-
|
221
|
-
|
222
|
-
def binary_for(buf)
|
223
|
-
BSON::Binary.new(buf.bytes.to_a)
|
220
|
+
else
|
221
|
+
BSON::Binary.new(buf.join, :generic)
|
224
222
|
end
|
225
223
|
end
|
226
224
|
|
@@ -296,6 +294,7 @@
|
|
296
294
|
|
297
295
|
Class.new do
|
298
296
|
include Mongoid::Document
|
297
|
+
include Mongoid::Attributes::Dynamic if Mongoid::VERSION.to_i >= 4
|
299
298
|
|
300
299
|
singleton_class = class << self; self; end
|
301
300
|
|
@@ -306,7 +305,8 @@
|
|
306
305
|
attr_accessor :defaults
|
307
306
|
end
|
308
307
|
|
309
|
-
self.
|
308
|
+
self.store_in :collection => "#{ prefix }.files"
|
309
|
+
|
310
310
|
self.defaults = Defaults.new
|
311
311
|
|
312
312
|
self.defaults.chunkSize = 4 * (mb = 2**20)
|
@@ -317,7 +317,7 @@
|
|
317
317
|
|
318
318
|
field(:length, :type => Integer, :default => 0)
|
319
319
|
field(:chunkSize, :type => Integer, :default => defaults.chunkSize)
|
320
|
-
field(:uploadDate, :type =>
|
320
|
+
field(:uploadDate, :type => Time, :default => Time.now.utc)
|
321
321
|
field(:md5, :type => String, :default => Digest::MD5.hexdigest(''))
|
322
322
|
|
323
323
|
%w( filename contentType length chunkSize uploadDate md5 ).each do |f|
|
@@ -327,7 +327,7 @@
|
|
327
327
|
|
328
328
|
has_many(:chunks, :class_name => chunk_model_name, :inverse_of => :files, :dependent => :destroy, :order => [:n, :asc])
|
329
329
|
|
330
|
-
index({:filename => 1}, :unique => true)
|
330
|
+
index({:filename => 1}, :unique => true)
|
331
331
|
|
332
332
|
def path
|
333
333
|
filename
|
@@ -342,8 +342,15 @@
|
|
342
342
|
end
|
343
343
|
|
344
344
|
def each(&block)
|
345
|
-
|
346
|
-
|
345
|
+
fetched, limit = 0, 7
|
346
|
+
|
347
|
+
while fetched < chunks.size
|
348
|
+
chunks.where(:n.lt => fetched+limit, :n.gte => fetched).
|
349
|
+
order_by([:n, :asc]).each do |chunk|
|
350
|
+
block.call(chunk.to_s)
|
351
|
+
end
|
352
|
+
|
353
|
+
fetched += limit
|
347
354
|
end
|
348
355
|
end
|
349
356
|
|
@@ -352,7 +359,7 @@
|
|
352
359
|
when Range
|
353
360
|
range = args.first
|
354
361
|
first_chunk = (range.min / chunkSize).floor
|
355
|
-
last_chunk = (range.max / chunkSize).
|
362
|
+
last_chunk = (range.max / chunkSize).floor
|
356
363
|
offset = range.min % chunkSize
|
357
364
|
length = range.max - range.min + 1
|
358
365
|
when Fixnum
|
@@ -360,7 +367,7 @@
|
|
360
367
|
start = self.length + start if start < 0
|
361
368
|
length = args.size == 2 ? args.last : 1
|
362
369
|
first_chunk = (start / chunkSize).floor
|
363
|
-
last_chunk = ((start + length) / chunkSize).
|
370
|
+
last_chunk = ((start + length) / chunkSize).floor
|
364
371
|
offset = start % chunkSize
|
365
372
|
end
|
366
373
|
|
@@ -407,7 +414,7 @@
|
|
407
414
|
contentType
|
408
415
|
end
|
409
416
|
|
410
|
-
def update_date
|
417
|
+
def update_date
|
411
418
|
updateDate
|
412
419
|
end
|
413
420
|
|
@@ -439,14 +446,14 @@
|
|
439
446
|
attr_accessor :namespace
|
440
447
|
end
|
441
448
|
|
442
|
-
self.
|
449
|
+
self.store_in :collection => "#{ prefix }.chunks"
|
443
450
|
|
444
451
|
field(:n, :type => Integer, :default => 0)
|
445
|
-
field(:data, :type => (defined?(Moped) ? Moped::BSON::Binary : BSON::Binary))
|
452
|
+
field(:data, :type => (defined?(Moped::BSON) ? Moped::BSON::Binary : BSON::Binary))
|
446
453
|
|
447
454
|
belongs_to(:file, :foreign_key => :files_id, :class_name => file_model_name)
|
448
455
|
|
449
|
-
index({:files_id => 1, :n => -1}, :unique => true)
|
456
|
+
index({:files_id => 1, :n => -1}, :unique => true)
|
450
457
|
|
451
458
|
def namespace
|
452
459
|
self.class.namespace
|
data/mongoid-grid_fs.gemspec
CHANGED
@@ -3,13 +3,14 @@
|
|
3
3
|
|
4
4
|
Gem::Specification::new do |spec|
|
5
5
|
spec.name = "mongoid-grid_fs"
|
6
|
-
spec.version = "1.9.
|
6
|
+
spec.version = "1.9.1"
|
7
7
|
spec.platform = Gem::Platform::RUBY
|
8
8
|
spec.summary = "mongoid-grid_fs"
|
9
9
|
spec.description = "a mongoid 3/moped compatible implementation of the grid_fs specification"
|
10
|
+
spec.license = "Ruby"
|
10
11
|
|
11
12
|
spec.files =
|
12
|
-
["
|
13
|
+
["LICENSE",
|
13
14
|
"README.md",
|
14
15
|
"Rakefile",
|
15
16
|
"lib",
|
@@ -35,9 +36,9 @@ Gem::Specification::new do |spec|
|
|
35
36
|
spec.test_files = nil
|
36
37
|
|
37
38
|
|
38
|
-
spec.add_dependency(*["mongoid", "
|
39
|
+
spec.add_dependency(*["mongoid", ">= 3.0", "< 5.0"])
|
39
40
|
|
40
|
-
spec.add_dependency(*["mime-types", "
|
41
|
+
spec.add_dependency(*["mime-types", ">= 1.19", "< 2.0"])
|
41
42
|
|
42
43
|
|
43
44
|
spec.extensions.push(*[])
|
data/test/helper.rb
CHANGED
@@ -8,8 +8,8 @@ Testing Mongoid::GridFs do
|
|
8
8
|
Mongoid::GridFS
|
9
9
|
|
10
10
|
prepare do
|
11
|
-
GridFS::File.
|
12
|
-
GridFS::Chunk.
|
11
|
+
GridFS::File.delete_all
|
12
|
+
GridFS::Chunk.delete_all
|
13
13
|
end
|
14
14
|
|
15
15
|
##
|
@@ -35,6 +35,14 @@ Testing Mongoid::GridFs do
|
|
35
35
|
assert{ g.filename == filename }
|
36
36
|
end
|
37
37
|
|
38
|
+
test 'with your own attributes' do
|
39
|
+
my_value = "my_value"
|
40
|
+
|
41
|
+
g = assert{ GridFS.put(__FILE__, :my_value => my_value) }
|
42
|
+
|
43
|
+
assert{ g.my_value == my_value }
|
44
|
+
end
|
45
|
+
|
38
46
|
test 'when error occurs (eg. missing file)' do
|
39
47
|
file = '/path/to/missing'
|
40
48
|
|
@@ -76,7 +84,7 @@ Testing Mongoid::GridFs do
|
|
76
84
|
path = 'a.rb'
|
77
85
|
data = IO.read(__FILE__)
|
78
86
|
|
79
|
-
sio = SIO.new(path, data)
|
87
|
+
sio = SIO.new(path, data)
|
80
88
|
|
81
89
|
g = assert{ GridFs[path] = sio and GridFs[path] }
|
82
90
|
|
@@ -160,13 +168,33 @@ Testing Mongoid::GridFs do
|
|
160
168
|
end
|
161
169
|
end
|
162
170
|
|
171
|
+
##
|
172
|
+
#
|
173
|
+
context 'iterating each chunk' do
|
174
|
+
test 'having file size more than 42mb' do
|
175
|
+
require 'tempfile'
|
176
|
+
|
177
|
+
orig, copy = %w{orig copy}.map do |suffix|
|
178
|
+
Tempfile.new("mongoid-grid_fs~43mb.#{suffix}")
|
179
|
+
end
|
180
|
+
|
181
|
+
assert system("dd if=/dev/zero of=#{orig.path} bs=#{43*1024*1024} count=1 &> /dev/null")
|
182
|
+
|
183
|
+
GridFs.get(GridFs.put(orig.path).id).each do |chunk|
|
184
|
+
copy.print(chunk.to_s)
|
185
|
+
end
|
186
|
+
|
187
|
+
assert { File.size(copy.path) == File.size(orig.path) }
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
163
191
|
##
|
164
192
|
#
|
165
193
|
context 'namespaces' do
|
166
194
|
test 'default' do
|
167
195
|
assert{ GridFs.namespace.prefix == 'fs' }
|
168
|
-
assert{ GridFs.file_model.collection_name == 'fs.files' }
|
169
|
-
assert{ GridFs.chunk_model.collection_name == 'fs.chunks' }
|
196
|
+
assert{ GridFs.file_model.collection_name.to_s == 'fs.files' }
|
197
|
+
assert{ GridFs.chunk_model.collection_name.to_s == 'fs.chunks' }
|
170
198
|
end
|
171
199
|
|
172
200
|
test 'new' do
|
@@ -175,10 +203,10 @@ Testing Mongoid::GridFs do
|
|
175
203
|
assert{ ns.prefix == 'ns' }
|
176
204
|
|
177
205
|
assert{ ns.file_model < Mongoid::Document }
|
178
|
-
assert{ ns.file_model.collection_name == 'ns.files' }
|
206
|
+
assert{ ns.file_model.collection_name.to_s == 'ns.files' }
|
179
207
|
|
180
208
|
assert{ ns.chunk_model < Mongoid::Document }
|
181
|
-
assert{ ns.chunk_model.collection_name == 'ns.chunks' }
|
209
|
+
assert{ ns.chunk_model.collection_name.to_s == 'ns.chunks' }
|
182
210
|
|
183
211
|
assert{ ns.file_model.destroy_all }
|
184
212
|
|
@@ -204,7 +232,7 @@ Testing Mongoid::GridFs do
|
|
204
232
|
|
205
233
|
expanded = proc{|paths| Array(paths).map{|path| File.expand_path(path)}}
|
206
234
|
|
207
|
-
assert{
|
235
|
+
assert{
|
208
236
|
expanded[ Mongoid::GridFS::Engine.paths['app/models'] ] == expanded[ libdir ]
|
209
237
|
}
|
210
238
|
end
|
@@ -212,7 +240,7 @@ Testing Mongoid::GridFs do
|
|
212
240
|
|
213
241
|
protected
|
214
242
|
def object_id_re
|
215
|
-
object_id = defined?(Moped) ? Moped::BSON::ObjectId.new : BSON::ObjectId.new
|
243
|
+
object_id = defined?(Moped::BSON) ? Moped::BSON::ObjectId.new : BSON::ObjectId.new
|
216
244
|
|
217
245
|
%r| \w{#{ object_id.to_s.size }} |iomx
|
218
246
|
end
|
metadata
CHANGED
@@ -1,50 +1,62 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-grid_fs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ara T. Howard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.0'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: mime-types
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - ! '>='
|
32
38
|
- !ruby/object:Gem::Version
|
33
39
|
version: '1.19'
|
40
|
+
- - <
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.0'
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
|
-
- -
|
47
|
+
- - ! '>='
|
39
48
|
- !ruby/object:Gem::Version
|
40
49
|
version: '1.19'
|
50
|
+
- - <
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '2.0'
|
41
53
|
description: a mongoid 3/moped compatible implementation of the grid_fs specification
|
42
54
|
email: ara.t.howard@gmail.com
|
43
55
|
executables: []
|
44
56
|
extensions: []
|
45
57
|
extra_rdoc_files: []
|
46
58
|
files:
|
47
|
-
-
|
59
|
+
- LICENSE
|
48
60
|
- README.md
|
49
61
|
- Rakefile
|
50
62
|
- lib/app/models/mongoid/grid_fs.rb
|
@@ -56,7 +68,8 @@ files:
|
|
56
68
|
- test/mongoid-grid_fs_test.rb
|
57
69
|
- test/testing.rb
|
58
70
|
homepage: https://github.com/ahoward/mongoid-grid_fs
|
59
|
-
licenses:
|
71
|
+
licenses:
|
72
|
+
- Ruby
|
60
73
|
metadata: {}
|
61
74
|
post_install_message:
|
62
75
|
rdoc_options: []
|