saviour 0.2.0 → 0.2.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
  SHA1:
3
- metadata.gz: 58fead9b2cc6702062727d40824f65b016445a6d
4
- data.tar.gz: 5a6a218dae027315fce70761c2b39035cd243bcb
3
+ metadata.gz: 2408d3766fe7e343df39bf80798d3f1c55b257bb
4
+ data.tar.gz: 982c9775fda3297f502b5dd5675d0887c65a51e5
5
5
  SHA512:
6
- metadata.gz: 58f13bfb42bb55782bcade9e8fefb67e5d697eb614cd181cca89eaa6443b3166dbbd73d70a53ce24af864de2d9d5f918c8dd48a13f1eb1a96fd821d1d8267a95
7
- data.tar.gz: c1d3737b8414cae6610d4c33232514aa74e99b1a5e948b887f2aa32de0b9bd5629b644478e269726053901590e16452af717486fcdb95f4d6bc1fb43ff393495
6
+ metadata.gz: 2fe5f34e9257b8268a0716b122488da444bbcb2564fc9809d37edd74e56475594f7a3f506a3733c29d21b9034964c2dca99284c11c7575e77de94462ed0da796
7
+ data.tar.gz: b036f619061734cccf4437c4ded64aabef8712f02adc8136c28390cd6706d21e30dbb484d99426ea8c0461a6ec02c75913c2d0a966d863ae8bb58b7d0f9f7b58
data/README.md CHANGED
@@ -246,11 +246,23 @@ the `host` option, as well as `region`, etc.
246
246
 
247
247
  The `exists?` method uses a head request to verify existence, so it doesn't actually download the file.
248
248
 
249
- All files will be created as public.
249
+ All files will be created as public by default, but you can set an additional argument when initializing the storage to
250
+ declare options to be used when creating files to S3, and those options will take precedence. Use this for example to
251
+ set an expiration time for the asset. Example:
252
+
253
+ ```
254
+ Saviour::Config.storage = Saviour::S3Storage.new(
255
+ bucket: "my-bucket-name",
256
+ aws_access_key_id: "stub",
257
+ aws_secret_access_key: "stub",
258
+ create_options: {public: false, 'Cache-Control' => 'max-age=31536000'}
259
+ )
260
+ ```
250
261
 
251
262
  This storage includes a feature of overwrite protection, raising an exception if an attempt is made of writing something
252
263
  on a path that already exists. This behaviour in enabled by default, but you can turn it off by passing an additional
253
- argument when instantiating the storage: `overwrite_protection: false`.
264
+ argument when instantiating the storage: `overwrite_protection: false`. This feature requires an additional HEAD request
265
+ to verify existence for every write.
254
266
 
255
267
 
256
268
  ## Source abstraction
@@ -5,6 +5,7 @@ module Saviour
5
5
  @public_url_prefix = conf.delete(:public_url_prefix)
6
6
  @conf = conf
7
7
  @overwrite_protection = conf.delete(:overwrite_protection) { true }
8
+ @create_options = conf.delete(:create_options) { {} }
8
9
  assert_directory_exists!
9
10
  end
10
11
 
@@ -12,10 +13,11 @@ module Saviour
12
13
  raise(RuntimeError, "The path you're trying to write already exists!") if @overwrite_protection && exists?(path)
13
14
 
14
15
  path = sanitize_leading_slash(path)
15
- directory.files.create(
16
- key: path,
17
- body: contents,
18
- public: true
16
+ directory.files.create({
17
+ key: path,
18
+ body: contents,
19
+ public: true
20
+ }.merge(@create_options)
19
21
  )
20
22
  end
21
23
 
@@ -1,3 +1,3 @@
1
1
  module Saviour
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -76,6 +76,19 @@ describe Saviour::S3Storage do
76
76
  expect(subject.exists?("/folder/file.out")).to be_truthy
77
77
  expect(subject.exists?("////folder/file.out")).to be_truthy
78
78
  end
79
+
80
+ describe "fog create options" do
81
+ subject { Saviour::S3Storage.new(bucket: "fake-bucket", aws_access_key_id: "stub", aws_secret_access_key: "stub", public_url_prefix: "https://fake-bucket.s3.amazonaws.com", create_options: {'Cache-Control' => 'max-age=31536000'}) }
82
+
83
+ it "uses passed options to create new files in S3" do
84
+ with_test_file("camaloon.jpg") do |file, _|
85
+ contents = file.read
86
+ subject.write(contents, destination_path)
87
+ file_data = mocked_s3.head(destination_path)
88
+ expect(file_data.cache_control).to eq "max-age=31536000"
89
+ end
90
+ end
91
+ end
79
92
  end
80
93
 
81
94
  describe "#read" do
data/spec/spec_helper.rb CHANGED
@@ -33,6 +33,8 @@ RSpec.configure do |config|
33
33
  example.run
34
34
  }
35
35
  end
36
+
37
+ config.after { Fog::Mock.reset }
36
38
  end
37
39
 
38
40
  def with_tempfile(ext = ".jpg")
@@ -77,8 +79,12 @@ class MockedS3Helper
77
79
  directory.files.get(path).destroy
78
80
  end
79
81
 
82
+ def head(path)
83
+ directory.files.head(path)
84
+ end
85
+
80
86
  def exists?(path)
81
- !!directory.files.head(path)
87
+ !!head(path)
82
88
  end
83
89
 
84
90
  def public_url(path)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: saviour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Campos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-16 00:00:00.000000000 Z
11
+ date: 2016-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord