cloudfuji_paperclip 2.4.6

Sign up to get free protection for your applications and to get access to all the features.
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