attached 0.2.7 → 0.2.8
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.
- data/lib/attached/attachment.rb +9 -1
- data/lib/attached/processor.rb +1 -1
- data/lib/attached/processor/audio.rb +9 -2
- data/lib/attached/processor/image.rb +9 -2
- data/lib/attached/storage.rb +10 -3
- data/lib/attached/storage/aws.rb +1 -1
- data/lib/attached/storage/google.rb +1 -1
- data/lib/attached/storage/local.rb +72 -0
- data/lib/attached/storage/rackspace.rb +3 -3
- data/lib/attached/version.rb +1 -1
- metadata +3 -2
data/lib/attached/attachment.rb
CHANGED
@@ -40,7 +40,7 @@ module Attached
|
|
40
40
|
@options ||= {
|
41
41
|
:path => ":name/:style/:identifier:extension",
|
42
42
|
:default => :original,
|
43
|
-
:medium => :
|
43
|
+
:medium => :local,
|
44
44
|
:credentials => {},
|
45
45
|
:styles => {},
|
46
46
|
:processors => [],
|
@@ -118,6 +118,11 @@ module Attached
|
|
118
118
|
# @object.avatar.assign(...)
|
119
119
|
|
120
120
|
def assign(file, identifier = "#{Guid.new}")
|
121
|
+
|
122
|
+
if file.is_a?(Attached::Attachment)
|
123
|
+
file = file.file
|
124
|
+
end
|
125
|
+
|
121
126
|
@file = file.respond_to?(:tempfile) ? file.tempfile : file
|
122
127
|
|
123
128
|
extension ||= File.extname(file.original_filename) if file.respond_to?(:original_filename)
|
@@ -130,6 +135,9 @@ module Attached
|
|
130
135
|
instance_set :identifier, identifier
|
131
136
|
|
132
137
|
process
|
138
|
+
|
139
|
+
ensure
|
140
|
+
file.close if file.respond_to?(:close)
|
133
141
|
end
|
134
142
|
|
135
143
|
|
data/lib/attached/processor.rb
CHANGED
@@ -12,7 +12,7 @@ module Attached
|
|
12
12
|
#
|
13
13
|
# Attached::Processor.processor(:audio)
|
14
14
|
# Attached::Processor.processor(:image)
|
15
|
-
# Attached::Processor.processor(Attached::Processor::
|
15
|
+
# Attached::Processor.processor(Attached::Processor::Custom.new)
|
16
16
|
|
17
17
|
def self.processor(processor)
|
18
18
|
|
@@ -29,6 +29,13 @@ module Attached
|
|
29
29
|
|
30
30
|
@extension ||= File.extname(self.file.path)
|
31
31
|
end
|
32
|
+
|
33
|
+
|
34
|
+
# Redirect output path.
|
35
|
+
|
36
|
+
def redirect
|
37
|
+
">/dev/null 2>&1" if File.exist?("/dev/null")
|
38
|
+
end
|
32
39
|
|
33
40
|
|
34
41
|
# Helper function for calling processors.
|
@@ -53,7 +60,7 @@ module Attached
|
|
53
60
|
|
54
61
|
parameters = parameters.join(" ").squeeze(" ")
|
55
62
|
|
56
|
-
`lame #{parameters}`
|
63
|
+
`lame #{parameters} #{redirect}`
|
57
64
|
|
58
65
|
raise Errno::ENOENT if $?.exitstatus == 127
|
59
66
|
|
@@ -62,7 +69,7 @@ module Attached
|
|
62
69
|
end
|
63
70
|
|
64
71
|
unless $?.exitstatus == 0
|
65
|
-
raise Attached::Processor::Error, "
|
72
|
+
raise Attached::Processor::Error, "must be an audio file"
|
66
73
|
end
|
67
74
|
|
68
75
|
return result
|
@@ -41,6 +41,13 @@ module Attached
|
|
41
41
|
@width = Integer(self.width) if self.width
|
42
42
|
@height = Integer(self.height) if self.height
|
43
43
|
end
|
44
|
+
|
45
|
+
|
46
|
+
# Redirect output path.
|
47
|
+
|
48
|
+
def redirect
|
49
|
+
">/dev/null 2>&1" if File.exist?("/dev/null")
|
50
|
+
end
|
44
51
|
|
45
52
|
|
46
53
|
# Helper function for calling processors.
|
@@ -73,7 +80,7 @@ module Attached
|
|
73
80
|
|
74
81
|
parameters = parameters.join(" ").squeeze(" ")
|
75
82
|
|
76
|
-
`convert #{parameters}`
|
83
|
+
`convert #{parameters} #{redirect}`
|
77
84
|
|
78
85
|
raise Errno::ENOENT if $?.exitstatus == 127
|
79
86
|
|
@@ -82,7 +89,7 @@ module Attached
|
|
82
89
|
end
|
83
90
|
|
84
91
|
unless $?.exitstatus == 0
|
85
|
-
raise Attached::Processor::Error, "
|
92
|
+
raise Attached::Processor::Error, "must be an image file"
|
86
93
|
end
|
87
94
|
|
88
95
|
return result
|
data/lib/attached/storage.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'attached/storage/base'
|
1
2
|
require 'attached/storage/aws'
|
2
3
|
require 'attached/storage/google'
|
3
4
|
require 'attached/storage/rackspace'
|
5
|
+
require 'attached/storage/local'
|
4
6
|
|
5
7
|
module Attached
|
6
8
|
module Storage
|
@@ -10,17 +12,22 @@ module Attached
|
|
10
12
|
#
|
11
13
|
# Usage:
|
12
14
|
#
|
15
|
+
# Attached::Storage.storage(:local)
|
13
16
|
# Attached::Storage.storage(:aws, "#{Rails.root}/config/aws.yml" )
|
14
17
|
# Attached::Storage.storage(:google, "#{Rails.root}/config/google.yml" )
|
15
18
|
# Attached::Storage.storage(:rackspace, "#{Rails.root}/config/rackspace.yml")
|
19
|
+
# Attached::Storage.storage(Attached::Storage::Custom.new)
|
16
20
|
|
17
|
-
def self.storage(
|
21
|
+
def self.storage(storage, credentials)
|
18
22
|
|
19
|
-
|
23
|
+
return storage if storage.is_a? Attached::Storage::Base
|
24
|
+
|
25
|
+
case storage
|
20
26
|
when :aws then return Attached::Storage::AWS.new credentials
|
21
27
|
when :google then return Attached::Storage::Google.new credentials
|
22
28
|
when :rackspace then return Attached::Storage::Rackspace.new credentials
|
23
|
-
|
29
|
+
when :local then return Attached::Storage::Local.new
|
30
|
+
else raise "undefined storage '#{storage}'"
|
24
31
|
end
|
25
32
|
|
26
33
|
end
|
data/lib/attached/storage/aws.rb
CHANGED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'attached/storage/base'
|
2
|
+
|
3
|
+
module Attached
|
4
|
+
module Storage
|
5
|
+
class Local < Base
|
6
|
+
|
7
|
+
|
8
|
+
attr_reader :mode
|
9
|
+
|
10
|
+
|
11
|
+
# Create a new interface supporting save and destroy operations.
|
12
|
+
#
|
13
|
+
# Usage:
|
14
|
+
#
|
15
|
+
# Attached::Storage::Local.new()
|
16
|
+
|
17
|
+
def initialize()
|
18
|
+
@mode = 0644
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
# Access the host (e.g. https://attached.commondatastorage.googleapis.com/) for a storage service.
|
23
|
+
#
|
24
|
+
# Usage:
|
25
|
+
#
|
26
|
+
# storage.host
|
27
|
+
|
28
|
+
def host()
|
29
|
+
"/system/"
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
# Save a file to a given path.
|
34
|
+
#
|
35
|
+
# Parameters:
|
36
|
+
#
|
37
|
+
# * file - The file to save.
|
38
|
+
# * path - The path to save.
|
39
|
+
|
40
|
+
def save(file, path)
|
41
|
+
path = "#{Rails.root}/public/system/#{path}"
|
42
|
+
dirname, basename = File.split(path)
|
43
|
+
|
44
|
+
begin
|
45
|
+
FileUtils.mkdir_p(dirname)
|
46
|
+
FileUtils.cp(file.path, path)
|
47
|
+
FileUtils.chmod(self.mode, path)
|
48
|
+
rescue Errno::ENOENT
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
# Destroy a file at a given path.
|
54
|
+
#
|
55
|
+
# Parameters:
|
56
|
+
#
|
57
|
+
# * path - The path to destroy.
|
58
|
+
|
59
|
+
def destroy(path)
|
60
|
+
path = "#{Rails.root}/public/system/#{path}"
|
61
|
+
dirname, basename = File.split(path)
|
62
|
+
|
63
|
+
begin
|
64
|
+
FileUtils.rm(path)
|
65
|
+
rescue Errno::ENOENT
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -18,7 +18,7 @@ module Attached
|
|
18
18
|
attr_reader :api_key
|
19
19
|
|
20
20
|
|
21
|
-
# Create a new
|
21
|
+
# Create a new interface supporting save and destroy operations.
|
22
22
|
#
|
23
23
|
# Usage:
|
24
24
|
#
|
@@ -47,7 +47,7 @@ module Attached
|
|
47
47
|
end
|
48
48
|
|
49
49
|
|
50
|
-
# Save a file to a given path
|
50
|
+
# Save a file to a given path.
|
51
51
|
#
|
52
52
|
# Parameters:
|
53
53
|
#
|
@@ -64,7 +64,7 @@ module Attached
|
|
64
64
|
end
|
65
65
|
|
66
66
|
|
67
|
-
# Destroy a file at a given path
|
67
|
+
# Destroy a file at a given path.
|
68
68
|
#
|
69
69
|
# Parameters:
|
70
70
|
#
|
data/lib/attached/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: attached
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.8
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kevin Sylvestre
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-23 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/attached/storage/base.rb
|
57
57
|
- lib/attached/storage/error.rb
|
58
58
|
- lib/attached/storage/google.rb
|
59
|
+
- lib/attached/storage/local.rb
|
59
60
|
- lib/attached/storage/rackspace.rb
|
60
61
|
- lib/attached/storage.rb
|
61
62
|
- lib/attached/version.rb
|