mongoid_grid 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/mongoid/grid.rb +26 -1
  2. metadata +3 -8
data/lib/mongoid/grid.rb CHANGED
@@ -53,6 +53,17 @@ module Mongoid
53
53
  end
54
54
  end
55
55
 
56
+ ##
57
+ # Create a method to set the attachment for binary string.
58
+ # eg: object.set_image(binary_string, "generated_filename.png")
59
+ define_method("set_#{name}") do |binary, filename|
60
+ if !binary.nil?
61
+ send(:create_attachment_raw, name, binary, filename)
62
+ else
63
+ send(:delete_attachment, name, send("#{name}_id"))
64
+ end
65
+ end
66
+
56
67
  ##
57
68
  # Return the relative URL to the file for use with Rack::Grid
58
69
  # eg: /grid/4ba69fde8c8f369a6e000003/somefile.png
@@ -115,11 +126,25 @@ module Mongoid
115
126
  end
116
127
  end
117
128
 
129
+ ##
130
+ # Attachments we need to add after save.
131
+ # For binary String data.
132
+ def create_attachment_raw(name, binary, filename)
133
+ type = MIME::Types.type_for(filename).first
134
+ mime = type ? type.content_type : "application/octet-stream"
135
+ send("#{name}_id=", BSON::ObjectId.new)
136
+ send("#{name}_name=", filename)
137
+ send("#{name}_size=", binary.size)
138
+ send("#{name}_type=", mime)
139
+ create_attachment_queue[name] = binary
140
+ end
141
+
118
142
  ##
119
143
  # Save an attachment to GridFS
120
144
  def create_grid_attachment(name,file)
145
+ data = file.respond_to?(:read) ? file.read : file
121
146
  grid.put(
122
- file.read,
147
+ data,
123
148
  :filename => attributes["#{name}_name"],
124
149
  :content_type => attributes["#{name}_type"],
125
150
  :_id => attributes["#{name}_id"]
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_grid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 7
10
- version: 0.0.7
8
+ - 8
9
+ version: 0.0.8
11
10
  platform: ruby
12
11
  authors:
13
12
  - Dusty Doris
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-10-03 00:00:00 -04:00
17
+ date: 2010-12-16 00:00:00 -05:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
@@ -40,7 +38,6 @@ dependencies:
40
38
  requirements:
41
39
  - - ">="
42
40
  - !ruby/object:Gem::Version
43
- hash: 62196421
44
41
  segments:
45
42
  - 2
46
43
  - 0
@@ -78,7 +75,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
75
  requirements:
79
76
  - - ">="
80
77
  - !ruby/object:Gem::Version
81
- hash: 3
82
78
  segments:
83
79
  - 0
84
80
  version: "0"
@@ -87,7 +83,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
83
  requirements:
88
84
  - - ">="
89
85
  - !ruby/object:Gem::Version
90
- hash: 3
91
86
  segments:
92
87
  - 0
93
88
  version: "0"