paperclip_heroku 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ See documentation in <code>lib/paperclip/heroku.rb</code>.
2
+
3
+ ## Specs
4
+
5
+ $ bundle install
6
+ $ bundle exec rspec spec
@@ -0,0 +1,80 @@
1
+ require 'paperclip'
2
+ require 'active_support/core_ext/module/aliasing'
3
+
4
+ module Paperclip
5
+ module Heroku
6
+ module ClassMethods
7
+ # Default filesystem path at which to save attachments.
8
+ DEFAULT_PATH = Paperclip::Attachment.default_options[:path]
9
+
10
+ # Default endpoint for S3 requests
11
+ DEFAULT_S3_HOST_NAME = 's3.amazonaws.com'
12
+
13
+ # Adds a :heroku option to Paperclip's +has_attached_file+ method.
14
+ #
15
+ # class User
16
+ # has_attached_file :avatar, heroku: true
17
+ # end
18
+ #
19
+ # Using +heroku: true+ configures Paperclip to use Amazon S3 on Heroku
20
+ # and the filesystem in development/testing.
21
+ #
22
+ # == Configuration
23
+ #
24
+ # S3 storage config can be set on the command line using +heroku config:add+, like this:
25
+ #
26
+ # $ heroku config:add S3_BUCKET=my_bucket_name
27
+ # $ heroku config:add S3_KEY=my_s3_access_key_id
28
+ # $ heroku config:add S3_SECRET=my_s3_secret_access_key
29
+ #
30
+ # You can also optionally set a S3_HOST_NAME to specify an endpoint for S3
31
+ # requests: for example, if your S3 bucket is in the US West (Oregon) region,
32
+ # you should set S3_HOST_NAME to 's3-us-west-2.amazonaws.com'. If not set,
33
+ # this will default to s3.amazonaws.com.
34
+ #
35
+ # == Note
36
+ #
37
+ # Paperclip::Heroku assumes that Heroku is configured to run your
38
+ # Rails app in the production environment.
39
+ #
40
+ def has_attached_file_with_heroku(name, options = {})
41
+ if options[:heroku] == true
42
+ # Set per-environment options for Heroku/development
43
+ #
44
+ # :storage is a given. Other options are only set
45
+ # if the user hasn't provided values for them.
46
+ #
47
+ options[:storage] = environment_storage
48
+ options[:path] ||= environment_path
49
+ options[:url] ||= environment_url
50
+ options[:bucket] ||= ENV['S3_BUCKET']
51
+ options[:s3_host_name] ||= ENV['S3_HOST_NAME'] || DEFAULT_S3_HOST_NAME
52
+ options[:s3_credentials] ||= {
53
+ :access_key_id => ENV['S3_KEY'],
54
+ :secret_access_key => ENV['S3_SECRET']
55
+ }
56
+ end
57
+
58
+ has_attached_file_without_heroku(name, options)
59
+ end
60
+
61
+ private
62
+ def environment_storage
63
+ Rails.env.production? ? :s3 : :filesystem
64
+ end
65
+
66
+ def environment_path
67
+ Rails.env.production? ? DEFAULT_PATH : ['public', DEFAULT_PATH].join
68
+ end
69
+
70
+ def environment_url
71
+ Rails.env.production? ? ':s3_domain_url' : DEFAULT_PATH
72
+ end
73
+ end
74
+ end
75
+
76
+ module ClassMethods
77
+ include Paperclip::Heroku::ClassMethods
78
+ alias_method_chain :has_attached_file, :heroku
79
+ end
80
+ end
@@ -0,0 +1,15 @@
1
+ module Paperclip
2
+ module Heroku
3
+ module Version
4
+ extend self
5
+
6
+ MAJOR = 0
7
+ MINOR = 2
8
+ TINY = 1
9
+
10
+ def to_s
11
+ [MAJOR, MINOR, TINY].join('.')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1 @@
1
+ require 'paperclip/heroku'
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: paperclip_heroku
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - James Wilding
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: paperclip
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.4.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.4.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: aws-sdk
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.10.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.10.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: autotest
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Easy Paperclip attachments using Heroku and Amazon S3.
95
+ email: office@jameswilding.net
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - lib/paperclip/heroku/version.rb
101
+ - lib/paperclip/heroku.rb
102
+ - lib/paperclip_heroku.rb
103
+ - README.md
104
+ homepage: http://github.com/jameswilding/paperclip_heroku
105
+ licenses: []
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 1.8.25
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: Paperclip + Heroku + Amazon S3
128
+ test_files: []