matic_grid 0.0.1 → 0.0.2

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.
Files changed (2) hide show
  1. data/lib/matic_grid.rb +31 -9
  2. metadata +4 -4
data/lib/matic_grid.rb CHANGED
@@ -44,7 +44,10 @@ module Mongomatic
44
44
  # Create a method to set the attachment
45
45
  # eg: object.image = File.open('/tmp/somefile.jpg')
46
46
  define_method("#{name}=") do |file|
47
- if file.respond_to?(:read)
47
+ case
48
+ when file.is_a?(Hash) && file[:tempfile]
49
+ send(:create_attachment, name, file)
50
+ when file.respond_to?(:read)
48
51
  send(:create_attachment, name, file)
49
52
  else
50
53
  send(:delete_attachment, name, self["#{name}_id"])
@@ -137,22 +140,34 @@ module Mongomatic
137
140
  ##
138
141
  # Attachments we need to add after save.
139
142
  def create_attachment(name,file)
140
- if file.respond_to?(:read)
143
+ case
144
+ when file.is_a?(Hash)
145
+ filename = file[:filename]
146
+ size = File.size(file[:tempfile])
147
+ mime = file[:type]
148
+ unless mime
149
+ type = MIME::Types.type_for(filename).first
150
+ mime = type ? type.content_type : "application/octet-stream"
151
+ end
152
+ when file.respond_to?(:read)
141
153
  filename = if file.respond_to?(:original_filename) && file.original_filename
142
- file.original_filename
154
+ file.original_filename
143
155
  elsif file.respond_to?(:tempfile)
144
156
  File.basename(file.tempfile.path)
145
157
  else
146
158
  File.basename(file.path)
147
159
  end
160
+ size = File.size(file.respond_to?(:tempfile) ? file.tempfile : file)
148
161
  type = MIME::Types.type_for(filename).first
149
162
  mime = type ? type.content_type : "application/octet-stream"
150
- self["#{name}_id"] = BSON::ObjectId.new
151
- self["#{name}_name"] = filename
152
- self["#{name}_size"] = File.size(file.respond_to?(:tempfile) ? file.tempfile : file)
153
- self["#{name}_type"] = mime
154
- create_attachment_queue[name] = file
163
+ else
164
+ return
155
165
  end
166
+ self["#{name}_id"] = BSON::ObjectId.new
167
+ self["#{name}_name"] = filename
168
+ self["#{name}_size"] = size
169
+ self["#{name}_type"] = mime
170
+ create_attachment_queue[name] = file
156
171
  end
157
172
 
158
173
  ##
@@ -171,7 +186,14 @@ module Mongomatic
171
186
  ##
172
187
  # Save an attachment to Grid
173
188
  def create_grid_attachment(name,file)
174
- data = file.respond_to?(:read) ? file.read : file
189
+ data = case
190
+ when file.is_a?(Hash)
191
+ file[:tempfile].read
192
+ when file.respond_to?(:read)
193
+ file.read
194
+ else
195
+ file
196
+ end
175
197
  grid.put(
176
198
  data,
177
199
  :filename => self["#{name}_name"],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matic_grid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-24 00:00:00.000000000Z
12
+ date: 2011-06-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mime-types
16
- requirement: &2156911780 !ruby/object:Gem::Requirement
16
+ requirement: &2153264700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156911780
24
+ version_requirements: *2153264700
25
25
  description: Plugin for Mongomatic to attach files via Grid
26
26
  email: github@dusty.name
27
27
  executables: []