asset_cloud 2.5.0 → 2.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10260022ec26ff28ffa08e6ce8c2b6842402f560f31388f2842f177b111baa9b
4
- data.tar.gz: 158eee048f865ca05cc55f9de8c4987eaed875a6c71d9b42c977bcf0006a7986
3
+ metadata.gz: d5f21ffc94cb1b9d60698ca150060999dfc3c2e01f347698bb8f0c8e108bf460
4
+ data.tar.gz: a7d8bddbdbc14473c7eb7d0f8c4d50a4e8db12e72dbb320df3f97025ad08cd90
5
5
  SHA512:
6
- metadata.gz: 25e4ac0842873db1c15b809bd9fbdbc009331156c3ef171b94b4b557f98e23e600e3539d6643b0165ed758fa7abda6f3b6f3984980d131b9b0286f3036259c58
7
- data.tar.gz: 1c276c4b7dda4e5ab72f27860eedaf7d4219d36c493790c3e24efccee078b347c0ffea363072ee3778a2e28cab5c208c4e07fab3685b65edde8813c4ad6faab1
6
+ metadata.gz: '08454bc3fc53e14b98b69d1a6feee2d57505d26cc61f7b43e52174300704e441faaea4a2710da524ab7136197d5c396de6f53110d66edb4b0a1d89d7cb1339cb'
7
+ data.tar.gz: 9802fca3c1bcc63a72b3effeca88044df1d1022854a5be72f9da865fb1acea768c57160896ea9930c0eece74c8301120c19fc09c2f1df8867ab530bca5b91a33
@@ -0,0 +1,3 @@
1
+ inherit_gem:
2
+ rubocop-shopify: rubocop.yml
3
+ inherit_from: .rubocop_todo.yml
@@ -0,0 +1,326 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2020-05-22 10:33:52 -0400 using RuboCop version 0.82.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 7
10
+ # Cop supports --auto-correct.
11
+ # Configuration parameters: AllowAdjacentOneLineDefs, NumberOfEmptyLines.
12
+ Layout/EmptyLineBetweenDefs:
13
+ Exclude:
14
+ - 'lib/asset_cloud/asset_extension.rb'
15
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
16
+
17
+ # Offense count: 1
18
+ # Cop supports --auto-correct.
19
+ # Configuration parameters: EnforcedStyle.
20
+ # SupportedStyles: empty_lines, no_empty_lines
21
+ Layout/EmptyLinesAroundBlockBody:
22
+ Exclude:
23
+ - 'lib/asset_cloud/callbacks.rb'
24
+
25
+ # Offense count: 4
26
+ # Cop supports --auto-correct.
27
+ # Configuration parameters: EnforcedStyle.
28
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines, beginning_only, ending_only
29
+ Layout/EmptyLinesAroundClassBody:
30
+ Exclude:
31
+ - 'lib/asset_cloud/base.rb'
32
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
33
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
34
+ - 'lib/asset_cloud/buckets/versioned_memory_bucket.rb'
35
+
36
+ # Offense count: 6
37
+ # Cop supports --auto-correct.
38
+ # Configuration parameters: EnforcedStyle.
39
+ # SupportedStyles: empty_lines, empty_lines_except_namespace, empty_lines_special, no_empty_lines
40
+ Layout/EmptyLinesAroundModuleBody:
41
+ Exclude:
42
+ - 'lib/asset_cloud/asset.rb'
43
+ - 'lib/asset_cloud/base.rb'
44
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
45
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
46
+ - 'lib/asset_cloud/free_key_locator.rb'
47
+
48
+ # Offense count: 2
49
+ # Cop supports --auto-correct.
50
+ # Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
51
+ Layout/ExtraSpacing:
52
+ Exclude:
53
+ - 'lib/asset_cloud/base.rb'
54
+
55
+ # Offense count: 9
56
+ # Cop supports --auto-correct.
57
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
58
+ # URISchemes: http, https
59
+ Layout/LineLength:
60
+ Max: 187
61
+
62
+ # Offense count: 1
63
+ # Cop supports --auto-correct.
64
+ Layout/RescueEnsureAlignment:
65
+ Exclude:
66
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
67
+
68
+ # Offense count: 5
69
+ # Cop supports --auto-correct.
70
+ Layout/SpaceAfterComma:
71
+ Exclude:
72
+ - 'lib/asset_cloud/asset.rb'
73
+ - 'lib/asset_cloud/base.rb'
74
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
75
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
76
+
77
+ # Offense count: 7
78
+ # Cop supports --auto-correct.
79
+ # Configuration parameters: EnforcedStyle.
80
+ # SupportedStyles: space, no_space
81
+ Layout/SpaceAroundEqualsInParameterDefault:
82
+ Exclude:
83
+ - 'lib/asset_cloud/base.rb'
84
+ - 'lib/asset_cloud/bucket.rb'
85
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
86
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
87
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
88
+
89
+ # Offense count: 3
90
+ # Cop supports --auto-correct.
91
+ # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
92
+ # SupportedStylesForExponentOperator: space, no_space
93
+ Layout/SpaceAroundOperators:
94
+ Exclude:
95
+ - 'lib/asset_cloud/base.rb'
96
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
97
+
98
+ # Offense count: 22
99
+ # Cop supports --auto-correct.
100
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
101
+ # SupportedStyles: space, no_space
102
+ # SupportedStylesForEmptyBraces: space, no_space
103
+ Layout/SpaceInsideBlockBraces:
104
+ Exclude:
105
+ - 'lib/asset_cloud/base.rb'
106
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
107
+
108
+ # Offense count: 2
109
+ # Cop supports --auto-correct.
110
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces.
111
+ # SupportedStyles: space, no_space, compact
112
+ # SupportedStylesForEmptyBraces: space, no_space
113
+ Layout/SpaceInsideHashLiteralBraces:
114
+ Exclude:
115
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
116
+
117
+ # Offense count: 9
118
+ # Configuration parameters: AllowSafeAssignment.
119
+ Lint/AssignmentInCondition:
120
+ Exclude:
121
+ - 'lib/asset_cloud/asset.rb'
122
+ - 'lib/asset_cloud/base.rb'
123
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
124
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
125
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
126
+
127
+ # Offense count: 2
128
+ Lint/DuplicateMethods:
129
+ Exclude:
130
+ - 'lib/asset_cloud/asset.rb'
131
+
132
+ # Offense count: 1
133
+ Lint/IneffectiveAccessModifier:
134
+ Exclude:
135
+ - 'lib/asset_cloud/base.rb'
136
+
137
+ # Offense count: 1
138
+ # Configuration parameters: AllowComments.
139
+ Lint/SuppressedException:
140
+ Exclude:
141
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
142
+
143
+ # Offense count: 1
144
+ # Cop supports --auto-correct.
145
+ # Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
146
+ Lint/UnusedBlockArgument:
147
+ Exclude:
148
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
149
+
150
+ # Offense count: 9
151
+ # Cop supports --auto-correct.
152
+ # Configuration parameters: AllowUnusedKeywordArguments, IgnoreEmptyMethods, IgnoreNotImplementedMethods.
153
+ Lint/UnusedMethodArgument:
154
+ Exclude:
155
+ - 'lib/asset_cloud/base.rb'
156
+ - 'lib/asset_cloud/buckets/blackhole_bucket.rb'
157
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
158
+ - 'lib/asset_cloud/buckets/invalid_bucket.rb'
159
+
160
+ # Offense count: 6
161
+ Lint/UselessAssignment:
162
+ Exclude:
163
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
164
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
165
+ - 'spec/gcs_bucket_spec.rb'
166
+
167
+ # Offense count: 1
168
+ Naming/ConstantName:
169
+ Exclude:
170
+ - 'lib/asset_cloud/buckets/invalid_bucket.rb'
171
+
172
+ # Offense count: 2
173
+ # Cop supports --auto-correct.
174
+ # Configuration parameters: EnforcedStyle.
175
+ # SupportedStyles: always, conditionals
176
+ Style/AndOr:
177
+ Exclude:
178
+ - 'lib/asset_cloud/asset.rb'
179
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
180
+
181
+ # Offense count: 1
182
+ # Cop supports --auto-correct.
183
+ # Configuration parameters: EnforcedStyle, AllowInnerBackticks.
184
+ # SupportedStyles: backticks, percent_x, mixed
185
+ Style/CommandLiteral:
186
+ Exclude:
187
+ - 'asset_cloud.gemspec'
188
+
189
+ # Offense count: 1
190
+ # Cop supports --auto-correct.
191
+ # Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions.
192
+ # SupportedStyles: assign_to_condition, assign_inside_condition
193
+ Style/ConditionalAssignment:
194
+ Exclude:
195
+ - 'lib/asset_cloud/base.rb'
196
+
197
+ # Offense count: 22
198
+ # Cop supports --auto-correct.
199
+ # Configuration parameters: EnforcedStyle.
200
+ # SupportedStyles: always, always_true, never
201
+ Style/FrozenStringLiteralComment:
202
+ Enabled: false
203
+
204
+ # Offense count: 3
205
+ # Cop supports --auto-correct.
206
+ # Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
207
+ # SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
208
+ Style/HashSyntax:
209
+ Exclude:
210
+ - 'lib/asset_cloud/asset_extension.rb'
211
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
212
+
213
+ # Offense count: 17
214
+ # Cop supports --auto-correct.
215
+ # Configuration parameters: IgnoreMacros, IgnoredMethods, IgnoredPatterns, IncludedMacros, AllowParenthesesInMultilineCall, AllowParenthesesInChaining, AllowParenthesesInCamelCaseMethod, EnforcedStyle.
216
+ # SupportedStyles: require_parentheses, omit_parentheses
217
+ Style/MethodCallWithArgsParentheses:
218
+ Exclude:
219
+ - 'Gemfile'
220
+ - 'Rakefile'
221
+ - 'asset_cloud.gemspec'
222
+ - 'lib/asset_cloud.rb'
223
+ - 'lib/asset_cloud/asset.rb'
224
+ - 'lib/asset_cloud/base.rb'
225
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
226
+ - 'lib/asset_cloud/metadata.rb'
227
+
228
+ # Offense count: 2
229
+ Style/MethodMissingSuper:
230
+ Exclude:
231
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
232
+ - 'spec/callbacks_spec.rb'
233
+
234
+ # Offense count: 2
235
+ Style/MissingRespondToMissing:
236
+ Exclude:
237
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
238
+ - 'spec/callbacks_spec.rb'
239
+
240
+ # Offense count: 2
241
+ # Cop supports --auto-correct.
242
+ Style/ParallelAssignment:
243
+ Exclude:
244
+ - 'lib/asset_cloud/base.rb'
245
+ - 'lib/asset_cloud/bucket.rb'
246
+
247
+ # Offense count: 2
248
+ # Cop supports --auto-correct.
249
+ Style/PerlBackrefs:
250
+ Exclude:
251
+ - 'lib/asset_cloud/base.rb'
252
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
253
+
254
+ # Offense count: 3
255
+ # Cop supports --auto-correct.
256
+ # Configuration parameters: EnforcedStyle.
257
+ # SupportedStyles: short, verbose
258
+ Style/PreferredHashMethods:
259
+ Exclude:
260
+ - 'lib/asset_cloud/buckets/memory_bucket.rb'
261
+ - 'lib/asset_cloud/buckets/versioned_memory_bucket.rb'
262
+
263
+ # Offense count: 2
264
+ # Cop supports --auto-correct.
265
+ Style/RedundantBegin:
266
+ Exclude:
267
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
268
+ - 'lib/asset_cloud/buckets/gcs_bucket.rb'
269
+
270
+ # Offense count: 5
271
+ # Cop supports --auto-correct.
272
+ Style/RedundantPercentQ:
273
+ Exclude:
274
+ - 'asset_cloud.gemspec'
275
+
276
+ # Offense count: 3
277
+ # Cop supports --auto-correct.
278
+ # Configuration parameters: AllowMultipleReturnValues.
279
+ Style/RedundantReturn:
280
+ Exclude:
281
+ - 'lib/asset_cloud/buckets/bucket_chain.rb'
282
+ - 'lib/asset_cloud/buckets/gcs_bucket.rb'
283
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
284
+
285
+ # Offense count: 14
286
+ # Cop supports --auto-correct.
287
+ Style/RedundantSelf:
288
+ Exclude:
289
+ - 'lib/asset_cloud/asset.rb'
290
+ - 'lib/asset_cloud/buckets/active_record_bucket.rb'
291
+ - 'lib/asset_cloud/callbacks.rb'
292
+ - 'lib/asset_cloud/metadata.rb'
293
+ - 'lib/asset_cloud/validations.rb'
294
+
295
+ # Offense count: 4
296
+ # Cop supports --auto-correct.
297
+ # Configuration parameters: EnforcedStyle, AllowInnerSlashes.
298
+ # SupportedStyles: slashes, percent_r, mixed
299
+ Style/RegexpLiteral:
300
+ Exclude:
301
+ - 'lib/asset_cloud/base.rb'
302
+ - 'lib/asset_cloud/buckets/file_system_bucket.rb'
303
+ - 'lib/asset_cloud/buckets/s3_bucket.rb'
304
+
305
+ # Offense count: 10
306
+ # Cop supports --auto-correct.
307
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
308
+ # AllowedMethods: present?, blank?, presence, try, try!
309
+ Style/SafeNavigation:
310
+ Exclude:
311
+ - 'lib/asset_cloud/base.rb'
312
+
313
+ # Offense count: 2
314
+ # Cop supports --auto-correct.
315
+ # Configuration parameters: AllowIfMethodIsEmpty.
316
+ Style/SingleLineMethods:
317
+ Exclude:
318
+ - 'lib/asset_cloud/asset_extension.rb'
319
+
320
+ # Offense count: 1
321
+ # Cop supports --auto-correct.
322
+ # Configuration parameters: EnforcedStyle.
323
+ # SupportedStyles: use_perl_names, use_english_names
324
+ Style/SpecialGlobalVars:
325
+ Exclude:
326
+ - 'asset_cloud.gemspec'
@@ -4,3 +4,9 @@ before_install:
4
4
  rvm:
5
5
  - '2.5'
6
6
  - '2.6'
7
+ - '2.7'
8
+
9
+ matrix:
10
+ exclude:
11
+ rvm: '2.7'
12
+ gemfile: gemfiles/Gemfile.activerecord52
data/History.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Asset Cloud Version History
2
2
 
3
+ ## Version 2.6.0, 2020-05-22
4
+
5
+ * Add checksum to metadata (https://github.com/Shopify/asset_cloud/pull/57)
6
+
7
+ **Note:** There are versions between 2.2.2 and 2.6.0 not covered by the History.
8
+
3
9
  ## Version 2.2.2, 2016-02-11
4
10
 
5
11
  * Allow asset_class to be a proc which determines the class to use within a bucket (https://github.com/Shopify/asset_cloud/pull/15)
@@ -4,6 +4,14 @@
4
4
 
5
5
  An abstraction layer around arbitrary and diverse asset stores.
6
6
 
7
+ == Value Hash vs Checksum
8
+
9
+ +value_hash+ is intended as a *private* hash/checksum, not exposed to end users. Its underlying algorithm is private, and
10
+ could change over time so should not be relied on by clients.
11
+
12
+ +checksum+ is intended as a *public* hash/checksum, exposed to end users. Its underlying algorithms is documented (e.g. MD5)
13
+ and is not expected to change.
14
+
7
15
  == Installation
8
16
 
9
17
  === as a Gem
data/Rakefile CHANGED
@@ -5,9 +5,10 @@ require 'rake'
5
5
  require 'rake/testtask'
6
6
  require 'rdoc/task'
7
7
  require 'rspec/core/rake_task'
8
+ require 'rubocop/rake_task'
8
9
 
9
- desc 'Default: run unit tests.'
10
- task :default => [:spec]
10
+ desc 'Default: run unit tests and style checks.'
11
+ task default: [:spec, :rubocop]
11
12
 
12
13
  desc "Run all spec examples"
13
14
  RSpec::Core::RakeTask.new do |t|
@@ -23,3 +24,5 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
23
24
  rdoc.rdoc_files.include('README')
24
25
  rdoc.rdoc_files.include('lib/**/*.rb')
25
26
  end
27
+
28
+ RuboCop::RakeTask.new
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{asset_cloud}
5
- s.version = "2.5.0"
5
+ s.version = "2.6.1"
6
6
 
7
7
  s.authors = %w(Shopify)
8
8
  s.summary = %q{An abstraction layer around arbitrary and diverse asset stores.}
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_development_dependency 'rspec'
25
25
  s.add_development_dependency 'rake'
26
- s.add_development_dependency 'mocha'
27
26
  s.add_development_dependency 'pry'
28
27
  s.add_development_dependency 'pry-byebug'
28
+ s.add_development_dependency 'rubocop-shopify'
29
29
  end
@@ -1,3 +1,4 @@
1
+ require 'addressable'
1
2
  require 'active_support'
2
3
 
3
4
  # Core
@@ -89,6 +89,10 @@ module AssetCloud
89
89
  metadata.value_hash
90
90
  end
91
91
 
92
+ def checksum
93
+ metadata.checksum
94
+ end
95
+
92
96
  def delete
93
97
  if new_asset?
94
98
  false
@@ -1,4 +1,4 @@
1
- require 'uri'
1
+ require 'uri/rfc2396_parser'
2
2
 
3
3
  module AssetCloud
4
4
 
@@ -29,6 +29,8 @@ module AssetCloud
29
29
  )\z/x
30
30
  MATCH_BUCKET = /^(\w+)(\/|$)/
31
31
 
32
+ URI_PARSER = URI::RFC2396_Parser.new
33
+
32
34
  attr_accessor :url, :root
33
35
 
34
36
  class_attribute :root_bucket_class
@@ -93,7 +95,7 @@ module AssetCloud
93
95
  end
94
96
 
95
97
  def url_for(key, options={})
96
- File.join(@url, URI.encode(key))
98
+ File.join(@url, URI_PARSER.escape(key))
97
99
  end
98
100
 
99
101
  def path_for(key)