model_attachment 0.0.6 → 0.0.7

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/model_attachment.rb +39 -16
  2. metadata +24 -13
@@ -14,7 +14,7 @@ require 'model_attachment/amazon'
14
14
 
15
15
  # The base module that gets included in ActiveRecord::Base.
16
16
  module ModelAttachment
17
- VERSION = "0.0.6"
17
+ VERSION = "0.0.7"
18
18
 
19
19
  class << self
20
20
 
@@ -70,6 +70,7 @@ module ModelAttachment
70
70
  before_destroy :destroy_attached_files
71
71
 
72
72
  end
73
+
73
74
 
74
75
  # Places ActiveRecord-style validations on the size of the file assigned. The
75
76
  # possible options are:
@@ -126,21 +127,42 @@ module ModelAttachment
126
127
  proto = options[:proto] || "http"
127
128
  port = options[:port]
128
129
  server_name = options[:server_name] || "localhost"
129
- url_path = options[:path] || "/documents/send"
130
+ url_path = options[:path] || "/#{self.class.to_s.downcase.pluralize}/deliver/"
130
131
  type = options[:type]
131
- server_name += ":" + port if port
132
+ server_name += ":" + port.to_s if port
133
+ type_string = "?type=#{type}" if type
134
+
135
+ unless self.class.attachment_options[:aws]
136
+ bucket = nil
137
+ end
138
+
139
+ # if files are public, serve public url
140
+ if public?
141
+ url_path = path.gsub(/^\/public(.*)/, '\1')
142
+ type_string = "_#{type}" if type
143
+ url = "#{proto}://#{server_name}#{url_path}#{basename}#{type_string}#{extension}"
144
+ elsif !bucket.nil?
145
+ # if bucket is set, then use aws url
146
+ aws_url(type)
147
+ else
148
+ # otherwise use private url with deliver
149
+ url = "#{proto}://#{server_name}#{url_path}#{id}#{type_string}"
150
+ end
132
151
 
133
- url = (bucket.nil? ? "#{proto}://#{server_name}#{url_path}?id=#{id}" : aws_url(type))
134
152
  log("Providing URL: #{url}")
135
153
  return url
136
154
  end
137
155
 
156
+ def public?
157
+ (path =~ /^\/public/)
158
+ end
159
+
138
160
  # returns the rails path of the file
139
161
  def path
140
162
  if (self.class.attachment_options[:path])
141
- return "/system" + interpolate(self.class.attachment_options[:path])
163
+ return interpolate(self.class.attachment_options[:path])
142
164
  else
143
- return "/system/" + sprintf("%04d", id) + "/"
165
+ return "/public/#{self.class.to_s.downcase.pluralize}/" + sprintf("%04d", id) + "/"
144
166
  end
145
167
  end
146
168
 
@@ -175,6 +197,17 @@ module ModelAttachment
175
197
  content_type =~ /^image\//
176
198
  end
177
199
 
200
+ # create the path based on the template
201
+ def interpolate(path, *args)
202
+ #methods = ["domain", "folder", "document", "version", "user", "account"]
203
+ self.class.instance_methods(false).sort.reverse.inject( path.dup ) do |result, tag|
204
+ #$stderr.puts("Result: #{result} Tag: #{tag}")
205
+ result.gsub(/:#{tag}/) do |match|
206
+ send( tag, *args )
207
+ end
208
+ end
209
+ end
210
+
178
211
  private
179
212
 
180
213
  def process_image_types #:nodoc:
@@ -236,16 +269,6 @@ module ModelAttachment
236
269
  end
237
270
  end
238
271
 
239
- # create the path based on the template
240
- def interpolate(path, *args)
241
- methods = ["domain", "folder", "document", "version"]
242
- methods.reverse.inject( path.dup ) do |result, tag|
243
- result.gsub(/:#{tag}/) do |match|
244
- send( tag, *args )
245
- end
246
- end
247
- end
248
-
249
272
  # removes any files associated with this instance
250
273
  def destroy_attached_files
251
274
  begin
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_attachment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 7
9
+ version: 0.0.7
5
10
  platform: ruby
6
11
  authors:
7
12
  - Steve Walker
@@ -9,29 +14,33 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-05-03 00:00:00 -04:00
17
+ date: 2010-05-04 00:00:00 -04:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: sqlite3-ruby
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
23
29
  version: "0"
24
- version:
30
+ type: :development
31
+ version_requirements: *id001
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: activerecord
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
33
41
  version: "0"
34
- version:
42
+ type: :development
43
+ version_requirements: *id002
35
44
  description: Simple file attachment for ActiveRecord models
36
45
  email: steve@blackboxweb.com
37
46
  executables: []
@@ -65,18 +74,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
74
  requirements:
66
75
  - - ">="
67
76
  - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
68
79
  version: "0"
69
- version:
70
80
  required_rubygems_version: !ruby/object:Gem::Requirement
71
81
  requirements:
72
82
  - - ">="
73
83
  - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
74
86
  version: "0"
75
- version:
76
87
  requirements:
77
88
  - ImageMagick
78
89
  rubyforge_project: model_attachment
79
- rubygems_version: 1.3.5
90
+ rubygems_version: 1.3.6
80
91
  signing_key:
81
92
  specification_version: 3
82
93
  summary: Attach files to ActiveRecord models and run commands on images