grip 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +9 -1
- data/VERSION +1 -1
- data/grip.gemspec +1 -1
- data/lib/grip.rb +12 -7
- data/test/test_grip.rb +7 -6
- metadata +1 -1
data/README.rdoc
CHANGED
@@ -15,8 +15,16 @@ The grip gem is hosted on gemcutter.org:
|
|
15
15
|
include MongoMapper::Document
|
16
16
|
include Grip
|
17
17
|
|
18
|
-
has_grid_attachment :image
|
18
|
+
has_grid_attachment :image, :resize => {:width=>50,:height=>50}
|
19
19
|
has_grid_attachment :pdf
|
20
|
+
|
21
|
+
# Hook for resizing or whatever gets you there.
|
22
|
+
# any specified options are passed back to you
|
23
|
+
# at this point.
|
24
|
+
# Just return the file when you're done.
|
25
|
+
def grip_process_file opts
|
26
|
+
opts[:file]
|
27
|
+
end
|
20
28
|
end
|
21
29
|
|
22
30
|
image = File.open('foo.png', 'r')
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.3
|
data/grip.gemspec
CHANGED
data/lib/grip.rb
CHANGED
@@ -27,9 +27,9 @@ module Grip
|
|
27
27
|
end
|
28
28
|
|
29
29
|
module ClassMethods
|
30
|
-
def has_grid_attachment(name)
|
30
|
+
def has_grid_attachment(name,opts={})
|
31
31
|
write_inheritable_attribute(:attachment_definitions, {}) if attachment_definitions.nil?
|
32
|
-
attachment_definitions[name] =
|
32
|
+
attachment_definitions[name] = opts
|
33
33
|
|
34
34
|
key "#{name}_size".to_sym, Integer
|
35
35
|
key "#{name}_path".to_sym, String
|
@@ -40,7 +40,7 @@ module Grip
|
|
40
40
|
# open returns the correct mime-type,
|
41
41
|
# read returns a string. Not sure if
|
42
42
|
# this is a GridFS problem or not
|
43
|
-
GridFS::GridStore.open(self.class.database, self["#{name}_path"], 'r') {|f| f
|
43
|
+
GridFS::GridStore.open(self.class.database, self["#{name}_path"], 'r') {|f| f }
|
44
44
|
end
|
45
45
|
|
46
46
|
define_method("#{name}=") do |file|
|
@@ -49,7 +49,7 @@ module Grip
|
|
49
49
|
self["#{name}_name"] = File.basename(file.path)
|
50
50
|
self["#{name}_path"] = "#{self.class.to_s.underscore}/#{name}/#{_id}"
|
51
51
|
self["#{name}_content_type"] = file.content_type rescue MIME::Types.type_for(self["#{name}_name"]).to_s
|
52
|
-
self.class.attachment_definitions[name] = file
|
52
|
+
self.class.attachment_definitions[name][:file] = file
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -60,16 +60,21 @@ module Grip
|
|
60
60
|
|
61
61
|
def save_attachments
|
62
62
|
self.class.attachment_definitions.each do |attachment|
|
63
|
-
name, file = attachment
|
64
63
|
|
65
|
-
|
64
|
+
name, opts = attachment
|
65
|
+
|
66
|
+
if (opts[:file].is_a?(File) || opts[:file].is_a?(Tempfile))
|
66
67
|
GridFS::GridStore.open(self.class.database, self["#{name}_path"], 'w', :content_type => self["#{name}_content_type"]) do |f|
|
67
|
-
f.write(
|
68
|
+
f.write( grip_process_file(opts))
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
74
|
+
def grip_process_file opts
|
75
|
+
opts[:file]
|
76
|
+
end
|
77
|
+
|
73
78
|
def destroy_attached_files
|
74
79
|
self.class.attachment_definitions.each do |name, attachment|
|
75
80
|
GridFS::GridStore.unlink(self.class.database, self["#{name}_path"])
|
data/test/test_grip.rb
CHANGED
@@ -4,8 +4,12 @@ class Foo
|
|
4
4
|
include MongoMapper::Document
|
5
5
|
include Grip
|
6
6
|
|
7
|
-
has_grid_attachment :image
|
7
|
+
has_grid_attachment :image, :resize => {:width=>50,:height=>50}
|
8
8
|
has_grid_attachment :pdf
|
9
|
+
|
10
|
+
def grip_process_file opts
|
11
|
+
opts[:file]
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
class GripTest < Test::Unit::TestCase
|
@@ -59,11 +63,8 @@ class GripTest < Test::Unit::TestCase
|
|
59
63
|
end
|
60
64
|
|
61
65
|
test "saves attachments correctly" do
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
#assert_equal @image.read, @doc.image
|
66
|
-
#assert_equal @pdf.read, @doc.pdf
|
66
|
+
assert_equal "image/png", @doc.image.content_type
|
67
|
+
assert_equal "application/pdf", @doc.pdf.content_type
|
67
68
|
|
68
69
|
assert GridFS::GridStore.exist?(MongoMapper.database, @doc.image_path)
|
69
70
|
assert GridFS::GridStore.exist?(MongoMapper.database, @doc.pdf_path)
|