cloudfuji_paperclip 2.4.6

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 (105) hide show
  1. data/.gitignore +22 -0
  2. data/.travis.yml +13 -0
  3. data/Appraisals +14 -0
  4. data/CONTRIBUTING.md +38 -0
  5. data/Gemfile +5 -0
  6. data/Gemfile.lock +137 -0
  7. data/LICENSE +26 -0
  8. data/README.md +444 -0
  9. data/Rakefile +41 -0
  10. data/cucumber/paperclip_steps.rb +6 -0
  11. data/features/basic_integration.feature +46 -0
  12. data/features/rake_tasks.feature +63 -0
  13. data/features/step_definitions/attachment_steps.rb +65 -0
  14. data/features/step_definitions/html_steps.rb +15 -0
  15. data/features/step_definitions/rails_steps.rb +182 -0
  16. data/features/step_definitions/s3_steps.rb +14 -0
  17. data/features/step_definitions/web_steps.rb +209 -0
  18. data/features/support/env.rb +8 -0
  19. data/features/support/fakeweb.rb +3 -0
  20. data/features/support/fixtures/.boot_config.rb.swo +0 -0
  21. data/features/support/fixtures/boot_config.txt +15 -0
  22. data/features/support/fixtures/gemfile.txt +5 -0
  23. data/features/support/fixtures/preinitializer.txt +20 -0
  24. data/features/support/paths.rb +28 -0
  25. data/features/support/rails.rb +46 -0
  26. data/features/support/selectors.rb +19 -0
  27. data/gemfiles/rails2.gemfile +9 -0
  28. data/gemfiles/rails3.gemfile +9 -0
  29. data/gemfiles/rails3_1.gemfile +9 -0
  30. data/generators/paperclip/USAGE +5 -0
  31. data/generators/paperclip/paperclip_generator.rb +27 -0
  32. data/generators/paperclip/templates/paperclip_migration.rb.erb +19 -0
  33. data/init.rb +4 -0
  34. data/lib/generators/paperclip/USAGE +8 -0
  35. data/lib/generators/paperclip/paperclip_generator.rb +33 -0
  36. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +19 -0
  37. data/lib/paperclip/attachment.rb +468 -0
  38. data/lib/paperclip/callback_compatibility.rb +61 -0
  39. data/lib/paperclip/geometry.rb +120 -0
  40. data/lib/paperclip/interpolations.rb +174 -0
  41. data/lib/paperclip/iostream.rb +45 -0
  42. data/lib/paperclip/matchers/have_attached_file_matcher.rb +57 -0
  43. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +81 -0
  44. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +54 -0
  45. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +95 -0
  46. data/lib/paperclip/matchers.rb +64 -0
  47. data/lib/paperclip/missing_attachment_styles.rb +87 -0
  48. data/lib/paperclip/processor.rb +58 -0
  49. data/lib/paperclip/railtie.rb +31 -0
  50. data/lib/paperclip/schema.rb +39 -0
  51. data/lib/paperclip/storage/filesystem.rb +81 -0
  52. data/lib/paperclip/storage/fog.rb +174 -0
  53. data/lib/paperclip/storage/s3.rb +333 -0
  54. data/lib/paperclip/storage.rb +3 -0
  55. data/lib/paperclip/style.rb +103 -0
  56. data/lib/paperclip/thumbnail.rb +105 -0
  57. data/lib/paperclip/upfile.rb +62 -0
  58. data/lib/paperclip/url_generator.rb +64 -0
  59. data/lib/paperclip/version.rb +3 -0
  60. data/lib/paperclip.rb +487 -0
  61. data/lib/tasks/paperclip.rake +101 -0
  62. data/paperclip.gemspec +41 -0
  63. data/rails/init.rb +2 -0
  64. data/shoulda_macros/paperclip.rb +124 -0
  65. data/test/.gitignore +1 -0
  66. data/test/attachment_test.rb +1116 -0
  67. data/test/database.yml +4 -0
  68. data/test/fixtures/12k.png +0 -0
  69. data/test/fixtures/50x50.png +0 -0
  70. data/test/fixtures/5k.png +0 -0
  71. data/test/fixtures/animated.gif +0 -0
  72. data/test/fixtures/bad.png +1 -0
  73. data/test/fixtures/fog.yml +8 -0
  74. data/test/fixtures/question?mark.png +0 -0
  75. data/test/fixtures/s3.yml +8 -0
  76. data/test/fixtures/spaced file.png +0 -0
  77. data/test/fixtures/text.txt +1 -0
  78. data/test/fixtures/twopage.pdf +0 -0
  79. data/test/fixtures/uppercase.PNG +0 -0
  80. data/test/geometry_test.rb +206 -0
  81. data/test/helper.rb +177 -0
  82. data/test/integration_test.rb +654 -0
  83. data/test/interpolations_test.rb +216 -0
  84. data/test/iostream_test.rb +71 -0
  85. data/test/matchers/have_attached_file_matcher_test.rb +24 -0
  86. data/test/matchers/validate_attachment_content_type_matcher_test.rb +87 -0
  87. data/test/matchers/validate_attachment_presence_matcher_test.rb +26 -0
  88. data/test/matchers/validate_attachment_size_matcher_test.rb +51 -0
  89. data/test/paperclip_missing_attachment_styles_test.rb +80 -0
  90. data/test/paperclip_test.rb +390 -0
  91. data/test/processor_test.rb +10 -0
  92. data/test/schema_test.rb +98 -0
  93. data/test/storage/filesystem_test.rb +56 -0
  94. data/test/storage/fog_test.rb +219 -0
  95. data/test/storage/s3_live_test.rb +138 -0
  96. data/test/storage/s3_test.rb +943 -0
  97. data/test/style_test.rb +209 -0
  98. data/test/support/mock_attachment.rb +22 -0
  99. data/test/support/mock_interpolator.rb +24 -0
  100. data/test/support/mock_model.rb +2 -0
  101. data/test/support/mock_url_generator_builder.rb +27 -0
  102. data/test/thumbnail_test.rb +383 -0
  103. data/test/upfile_test.rb +53 -0
  104. data/test/url_generator_test.rb +187 -0
  105. metadata +404 -0
@@ -0,0 +1,53 @@
1
+ require './test/helper'
2
+
3
+ class UpfileTest < Test::Unit::TestCase
4
+ { %w(jpg jpe jpeg) => 'image/jpeg',
5
+ %w(tif tiff) => 'image/tiff',
6
+ %w(png) => 'image/png',
7
+ %w(gif) => 'image/gif',
8
+ %w(bmp) => 'image/bmp',
9
+ %w(svg) => 'image/svg+xml',
10
+ %w(txt) => 'text/plain',
11
+ %w(htm html) => 'text/html',
12
+ %w(csv) => 'text/csv',
13
+ %w(xml) => 'application/xml',
14
+ %w(css) => 'text/css',
15
+ %w(js) => 'application/javascript',
16
+ %w(foo) => 'application/x-foo'
17
+ }.each do |extensions, content_type|
18
+ extensions.each do |extension|
19
+ should "return a content_type of #{content_type} for a file with extension .#{extension}" do
20
+ file = stub('file', :path => "basename.#{extension}")
21
+ class << file
22
+ include Paperclip::Upfile
23
+ end
24
+
25
+ assert_equal content_type, file.content_type
26
+ end
27
+ end
28
+ end
29
+
30
+ should "return a content_type of text/plain on a real file whose content_type is determined with the file command" do
31
+ file = File.new(File.join(File.dirname(__FILE__), "..", "LICENSE"))
32
+ class << file
33
+ include Paperclip::Upfile
34
+ end
35
+ assert_equal 'text/plain', file.content_type
36
+ end
37
+
38
+ { '5k.png' => 'image/png',
39
+ 'animated.gif' => 'image/gif',
40
+ 'text.txt' => 'text/plain',
41
+ 'twopage.pdf' => 'application/pdf'
42
+ }.each do |filename, content_type|
43
+ should "return a content type of #{content_type} from a file command for file #{filename}" do
44
+ file = File.new(File.join(File.dirname(__FILE__), "fixtures", filename))
45
+ class << file
46
+ include Paperclip::Upfile
47
+ end
48
+
49
+ assert_equal content_type, file.type_from_file_command
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,187 @@
1
+ # encoding: utf-8
2
+ require './test/helper'
3
+ require 'paperclip/url_generator'
4
+
5
+ class UrlGeneratorTest < Test::Unit::TestCase
6
+ should "use the given interpolator" do
7
+ expected = "the expected result"
8
+ mock_attachment = MockAttachment.new
9
+ mock_interpolator = MockInterpolator.new(:result => expected)
10
+
11
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment,
12
+ { :interpolator => mock_interpolator })
13
+ result = url_generator.for(:style_name, {})
14
+
15
+ assert_equal expected, result
16
+ assert mock_interpolator.has_interpolated_attachment?(mock_attachment)
17
+ assert mock_interpolator.has_interpolated_style_name?(:style_name)
18
+ end
19
+
20
+ should "use the default URL when no file is assigned" do
21
+ mock_attachment = MockAttachment.new
22
+ mock_interpolator = MockInterpolator.new
23
+ default_url = "the default url"
24
+ options = { :interpolator => mock_interpolator, :default_url => default_url}
25
+
26
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
27
+ url_generator.for(:style_name, {})
28
+
29
+ assert mock_interpolator.has_interpolated_pattern?(default_url),
30
+ "expected the interpolator to be passed #{default_url.inspect} but it wasn't"
31
+ end
32
+
33
+ should "execute the default URL lambda when no file is assigned" do
34
+ mock_attachment = MockAttachment.new
35
+ mock_interpolator = MockInterpolator.new
36
+ default_url = lambda {|attachment| "the #{attachment.class.name} default url" }
37
+ options = { :interpolator => mock_interpolator, :default_url => default_url}
38
+
39
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
40
+ url_generator.for(:style_name, {})
41
+
42
+ assert mock_interpolator.has_interpolated_pattern?("the MockAttachment default url"),
43
+ %{expected the interpolator to be passed "the MockAttachment default url", but it wasn't}
44
+ end
45
+
46
+ should "execute the method named by the symbol as the default URL when no file is assigned" do
47
+ mock_model = MockModel.new
48
+ mock_attachment = MockAttachment.new(:model => mock_model)
49
+ mock_interpolator = MockInterpolator.new
50
+ default_url = :to_s
51
+ options = { :interpolator => mock_interpolator, :default_url => default_url}
52
+
53
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
54
+ url_generator.for(:style_name, {})
55
+
56
+ assert mock_interpolator.has_interpolated_pattern?(mock_model.to_s),
57
+ %{expected the interpolator to be passed #{mock_model.to_s}, but it wasn't}
58
+ end
59
+
60
+ should "URL-escape spaces if asked to" do
61
+ expected = "the expected result"
62
+ mock_attachment = MockAttachment.new
63
+ mock_interpolator = MockInterpolator.new(:result => expected)
64
+ options = { :interpolator => mock_interpolator }
65
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
66
+
67
+ result = url_generator.for(:style_name, {:escape => true})
68
+
69
+ assert_equal "the%20expected%20result", result
70
+ end
71
+
72
+ should "escape the result of the interpolator using a method on the object, if asked to escape" do
73
+ expected = Class.new do
74
+ def escape
75
+ "the escaped result"
76
+ end
77
+ end.new
78
+ mock_attachment = MockAttachment.new
79
+ mock_interpolator = MockInterpolator.new(:result => expected)
80
+ options = { :interpolator => mock_interpolator}
81
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
82
+
83
+ result = url_generator.for(:style_name, {:escape => true})
84
+
85
+ assert_equal "the escaped result", result
86
+ end
87
+
88
+ should "leave spaces unescaped as asked to" do
89
+ expected = "the expected result"
90
+ mock_attachment = MockAttachment.new
91
+ mock_interpolator = MockInterpolator.new(:result => expected)
92
+ options = { :interpolator => mock_interpolator}
93
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
94
+
95
+ result = url_generator.for(:style_name, {:escape => false})
96
+
97
+ assert_equal "the expected result", result
98
+ end
99
+
100
+ should "default to leaving spaces unescaped" do
101
+ expected = "the expected result"
102
+ mock_attachment = MockAttachment.new
103
+ mock_interpolator = MockInterpolator.new(:result => expected)
104
+ options = { :interpolator => mock_interpolator}
105
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
106
+
107
+ result = url_generator.for(:style_name, {})
108
+
109
+ assert_equal "the expected result", result
110
+ end
111
+
112
+ should "produce URLs without the updated_at value when the object does not respond to updated_at" do
113
+ expected = "the expected result"
114
+ mock_interpolator = MockInterpolator.new(:result => expected)
115
+ mock_attachment = MockAttachment.new(:responds_to_updated_at => false)
116
+ options = { :interpolator => mock_interpolator}
117
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
118
+
119
+ result = url_generator.for(:style_name, {:timestamp => true})
120
+
121
+ assert_equal expected, result
122
+ end
123
+
124
+ should "produce URLs without the updated_at value when the updated_at value is nil" do
125
+ expected = "the expected result"
126
+ mock_interpolator = MockInterpolator.new(:result => expected)
127
+ mock_attachment = MockAttachment.new(:responds_to_updated_at => true, :updated_at => nil)
128
+ options = { :interpolator => mock_interpolator}
129
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
130
+
131
+ result = url_generator.for(:style_name, {:timestamp => true})
132
+
133
+ assert_equal expected, result
134
+ end
135
+
136
+ should "produce URLs with the updated_at when it exists" do
137
+ expected = "the expected result"
138
+ updated_at = 1231231234
139
+ mock_interpolator = MockInterpolator.new(:result => expected)
140
+ mock_attachment = MockAttachment.new(:updated_at => updated_at)
141
+ options = { :interpolator => mock_interpolator}
142
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
143
+
144
+ result = url_generator.for(:style_name, {:timestamp => true})
145
+
146
+ assert_equal "#{expected}?#{updated_at}", result
147
+ end
148
+
149
+ should "produce URLs with the updated_at when it exists, separated with a & if a ? follow by = already exists" do
150
+ expected = "the?expected=result"
151
+ updated_at = 1231231234
152
+ mock_interpolator = MockInterpolator.new(:result => expected)
153
+ mock_attachment = MockAttachment.new(:updated_at => updated_at)
154
+ options = { :interpolator => mock_interpolator}
155
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
156
+
157
+ result = url_generator.for(:style_name, {:timestamp => true})
158
+
159
+ assert_equal "#{expected}&#{updated_at}", result
160
+ end
161
+
162
+ should "produce URLs without the updated_at when told to do as much" do
163
+ expected = "the expected result"
164
+ updated_at = 1231231234
165
+ mock_interpolator = MockInterpolator.new(:result => expected)
166
+ mock_attachment = MockAttachment.new(:updated_at => updated_at)
167
+ options = { :interpolator => mock_interpolator}
168
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
169
+
170
+ result = url_generator.for(:style_name, {:timestamp => false})
171
+
172
+ assert_equal expected, result
173
+ end
174
+
175
+ should "produce the correct URL when the instance has a file name" do
176
+ expected = "the expected result"
177
+ mock_attachment = MockAttachment.new(:original_filename => 'exists')
178
+ mock_interpolator = MockInterpolator.new
179
+ options = { :interpolator => mock_interpolator, :url => expected}
180
+
181
+ url_generator = Paperclip::UrlGenerator.new(mock_attachment, options)
182
+ url_generator.for(:style_name, {})
183
+
184
+ assert mock_interpolator.has_interpolated_pattern?(expected),
185
+ "expected the interpolator to be passed #{expected.inspect} but it wasn't"
186
+ end
187
+ end
metadata ADDED
@@ -0,0 +1,404 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cloudfuji_paperclip
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 2.4.6
6
+ platform: ruby
7
+ authors:
8
+ - Jon Yurek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-04-26 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activerecord
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: activesupport
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: cocaine
39
+ requirement: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 0.0.2
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: mime-types
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: shoulda
61
+ requirement: &id005 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: appraisal
72
+ requirement: &id006 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.4.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: mocha
83
+ requirement: &id007 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: aws-sdk
94
+ requirement: &id008 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: "0"
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: sqlite3
105
+ requirement: &id009 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.4
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: *id009
114
+ - !ruby/object:Gem::Dependency
115
+ name: cucumber
116
+ requirement: &id010 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ~>
120
+ - !ruby/object:Gem::Version
121
+ version: 1.1.0
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: *id010
125
+ - !ruby/object:Gem::Dependency
126
+ name: aruba
127
+ requirement: &id011 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: "0"
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: *id011
136
+ - !ruby/object:Gem::Dependency
137
+ name: capybara
138
+ requirement: &id012 !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: "0"
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: *id012
147
+ - !ruby/object:Gem::Dependency
148
+ name: bundler
149
+ requirement: &id013 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ type: :development
156
+ prerelease: false
157
+ version_requirements: *id013
158
+ - !ruby/object:Gem::Dependency
159
+ name: cocaine
160
+ requirement: &id014 !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: "0.2"
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: *id014
169
+ - !ruby/object:Gem::Dependency
170
+ name: fog
171
+ requirement: &id015 !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: "0"
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: *id015
180
+ - !ruby/object:Gem::Dependency
181
+ name: rake
182
+ requirement: &id016 !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: "0"
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: *id016
191
+ - !ruby/object:Gem::Dependency
192
+ name: fakeweb
193
+ requirement: &id017 !ruby/object:Gem::Requirement
194
+ none: false
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: "0"
199
+ type: :development
200
+ prerelease: false
201
+ version_requirements: *id017
202
+ description: Temporary fork of the paperclip gem to support AWS STS
203
+ email:
204
+ - sean@fakecoolguys.com
205
+ executables: []
206
+
207
+ extensions: []
208
+
209
+ extra_rdoc_files: []
210
+
211
+ files:
212
+ - .gitignore
213
+ - .travis.yml
214
+ - Appraisals
215
+ - CONTRIBUTING.md
216
+ - Gemfile
217
+ - Gemfile.lock
218
+ - LICENSE
219
+ - README.md
220
+ - Rakefile
221
+ - cucumber/paperclip_steps.rb
222
+ - features/basic_integration.feature
223
+ - features/rake_tasks.feature
224
+ - features/step_definitions/attachment_steps.rb
225
+ - features/step_definitions/html_steps.rb
226
+ - features/step_definitions/rails_steps.rb
227
+ - features/step_definitions/s3_steps.rb
228
+ - features/step_definitions/web_steps.rb
229
+ - features/support/env.rb
230
+ - features/support/fakeweb.rb
231
+ - features/support/fixtures/.boot_config.rb.swo
232
+ - features/support/fixtures/boot_config.txt
233
+ - features/support/fixtures/gemfile.txt
234
+ - features/support/fixtures/preinitializer.txt
235
+ - features/support/paths.rb
236
+ - features/support/rails.rb
237
+ - features/support/selectors.rb
238
+ - gemfiles/rails2.gemfile
239
+ - gemfiles/rails3.gemfile
240
+ - gemfiles/rails3_1.gemfile
241
+ - generators/paperclip/USAGE
242
+ - generators/paperclip/paperclip_generator.rb
243
+ - generators/paperclip/templates/paperclip_migration.rb.erb
244
+ - init.rb
245
+ - lib/generators/paperclip/USAGE
246
+ - lib/generators/paperclip/paperclip_generator.rb
247
+ - lib/generators/paperclip/templates/paperclip_migration.rb.erb
248
+ - lib/paperclip.rb
249
+ - lib/paperclip/attachment.rb
250
+ - lib/paperclip/callback_compatibility.rb
251
+ - lib/paperclip/geometry.rb
252
+ - lib/paperclip/interpolations.rb
253
+ - lib/paperclip/iostream.rb
254
+ - lib/paperclip/matchers.rb
255
+ - lib/paperclip/matchers/have_attached_file_matcher.rb
256
+ - lib/paperclip/matchers/validate_attachment_content_type_matcher.rb
257
+ - lib/paperclip/matchers/validate_attachment_presence_matcher.rb
258
+ - lib/paperclip/matchers/validate_attachment_size_matcher.rb
259
+ - lib/paperclip/missing_attachment_styles.rb
260
+ - lib/paperclip/processor.rb
261
+ - lib/paperclip/railtie.rb
262
+ - lib/paperclip/schema.rb
263
+ - lib/paperclip/storage.rb
264
+ - lib/paperclip/storage/filesystem.rb
265
+ - lib/paperclip/storage/fog.rb
266
+ - lib/paperclip/storage/s3.rb
267
+ - lib/paperclip/style.rb
268
+ - lib/paperclip/thumbnail.rb
269
+ - lib/paperclip/upfile.rb
270
+ - lib/paperclip/url_generator.rb
271
+ - lib/paperclip/version.rb
272
+ - lib/tasks/paperclip.rake
273
+ - paperclip.gemspec
274
+ - rails/init.rb
275
+ - shoulda_macros/paperclip.rb
276
+ - test/.gitignore
277
+ - test/attachment_test.rb
278
+ - test/database.yml
279
+ - test/fixtures/12k.png
280
+ - test/fixtures/50x50.png
281
+ - test/fixtures/5k.png
282
+ - test/fixtures/animated.gif
283
+ - test/fixtures/bad.png
284
+ - test/fixtures/fog.yml
285
+ - test/fixtures/question?mark.png
286
+ - test/fixtures/s3.yml
287
+ - test/fixtures/spaced file.png
288
+ - test/fixtures/text.txt
289
+ - test/fixtures/twopage.pdf
290
+ - test/fixtures/uppercase.PNG
291
+ - test/geometry_test.rb
292
+ - test/helper.rb
293
+ - test/integration_test.rb
294
+ - test/interpolations_test.rb
295
+ - test/iostream_test.rb
296
+ - test/matchers/have_attached_file_matcher_test.rb
297
+ - test/matchers/validate_attachment_content_type_matcher_test.rb
298
+ - test/matchers/validate_attachment_presence_matcher_test.rb
299
+ - test/matchers/validate_attachment_size_matcher_test.rb
300
+ - test/paperclip_missing_attachment_styles_test.rb
301
+ - test/paperclip_test.rb
302
+ - test/processor_test.rb
303
+ - test/schema_test.rb
304
+ - test/storage/filesystem_test.rb
305
+ - test/storage/fog_test.rb
306
+ - test/storage/s3_live_test.rb
307
+ - test/storage/s3_test.rb
308
+ - test/style_test.rb
309
+ - test/support/mock_attachment.rb
310
+ - test/support/mock_interpolator.rb
311
+ - test/support/mock_model.rb
312
+ - test/support/mock_url_generator_builder.rb
313
+ - test/thumbnail_test.rb
314
+ - test/upfile_test.rb
315
+ - test/url_generator_test.rb
316
+ homepage: https://github.com/thoughtbot/paperclip
317
+ licenses: []
318
+
319
+ post_install_message:
320
+ rdoc_options: []
321
+
322
+ require_paths:
323
+ - lib
324
+ required_ruby_version: !ruby/object:Gem::Requirement
325
+ none: false
326
+ requirements:
327
+ - - ">="
328
+ - !ruby/object:Gem::Version
329
+ hash: -251181474667849768
330
+ segments:
331
+ - 0
332
+ version: "0"
333
+ required_rubygems_version: !ruby/object:Gem::Requirement
334
+ none: false
335
+ requirements:
336
+ - - ">="
337
+ - !ruby/object:Gem::Version
338
+ hash: -251181474667849768
339
+ segments:
340
+ - 0
341
+ version: "0"
342
+ requirements:
343
+ - ImageMagick
344
+ rubyforge_project: paperclip
345
+ rubygems_version: 1.8.17
346
+ signing_key:
347
+ specification_version: 3
348
+ summary: File attachments as attributes for ActiveRecord
349
+ test_files:
350
+ - features/basic_integration.feature
351
+ - features/rake_tasks.feature
352
+ - features/step_definitions/attachment_steps.rb
353
+ - features/step_definitions/html_steps.rb
354
+ - features/step_definitions/rails_steps.rb
355
+ - features/step_definitions/s3_steps.rb
356
+ - features/step_definitions/web_steps.rb
357
+ - features/support/env.rb
358
+ - features/support/fakeweb.rb
359
+ - features/support/fixtures/.boot_config.rb.swo
360
+ - features/support/fixtures/boot_config.txt
361
+ - features/support/fixtures/gemfile.txt
362
+ - features/support/fixtures/preinitializer.txt
363
+ - features/support/paths.rb
364
+ - features/support/rails.rb
365
+ - features/support/selectors.rb
366
+ - test/attachment_test.rb
367
+ - test/database.yml
368
+ - test/fixtures/12k.png
369
+ - test/fixtures/50x50.png
370
+ - test/fixtures/5k.png
371
+ - test/fixtures/animated.gif
372
+ - test/fixtures/bad.png
373
+ - test/fixtures/fog.yml
374
+ - test/fixtures/question?mark.png
375
+ - test/fixtures/s3.yml
376
+ - test/fixtures/spaced file.png
377
+ - test/fixtures/text.txt
378
+ - test/fixtures/twopage.pdf
379
+ - test/fixtures/uppercase.PNG
380
+ - test/geometry_test.rb
381
+ - test/helper.rb
382
+ - test/integration_test.rb
383
+ - test/interpolations_test.rb
384
+ - test/iostream_test.rb
385
+ - test/matchers/have_attached_file_matcher_test.rb
386
+ - test/matchers/validate_attachment_content_type_matcher_test.rb
387
+ - test/matchers/validate_attachment_presence_matcher_test.rb
388
+ - test/matchers/validate_attachment_size_matcher_test.rb
389
+ - test/paperclip_missing_attachment_styles_test.rb
390
+ - test/paperclip_test.rb
391
+ - test/processor_test.rb
392
+ - test/schema_test.rb
393
+ - test/storage/filesystem_test.rb
394
+ - test/storage/fog_test.rb
395
+ - test/storage/s3_live_test.rb
396
+ - test/storage/s3_test.rb
397
+ - test/style_test.rb
398
+ - test/support/mock_attachment.rb
399
+ - test/support/mock_interpolator.rb
400
+ - test/support/mock_model.rb
401
+ - test/support/mock_url_generator_builder.rb
402
+ - test/thumbnail_test.rb
403
+ - test/upfile_test.rb
404
+ - test/url_generator_test.rb