saviour 0.2.2 → 0.2.3
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +13 -0
- data/Appraisals +19 -0
- data/gemfiles/4.0.gemfile +9 -0
- data/gemfiles/4.1.gemfile +9 -0
- data/gemfiles/4.2.gemfile +9 -0
- data/gemfiles/5.0.gemfile +9 -0
- data/lib/saviour/config.rb +20 -4
- data/lib/saviour/version.rb +1 -1
- data/saviour.gemspec +3 -2
- data/spec/feature/access_to_model_and_mounted_as_spec.rb +3 -4
- data/spec/feature/crud_workflows_spec.rb +7 -1
- data/spec/models/config_spec.rb +23 -7
- data/spec/models/file_spec.rb +2 -2
- data/spec/spec_helper.rb +12 -0
- metadata +25 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c2fca8190280a50014041a2989e1faa1ab76940
|
4
|
+
data.tar.gz: 49c26d990899a05d0b10ce48196c26429a0e8bff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06fa6cba605bc2d7f44043bd979189cf3b8ddeb27faee2dd14f7c77c6361910c5abe0de610562cdd5d21c56e41e636a8aefc5a1fe40a879a1e46c3175e3d08c3
|
7
|
+
data.tar.gz: 0075fc54313974fe0d8ca044ad9b749bc92368ad1053d2844b60bd8e518d2d4f311d596423fbe0598e7a94e77b6a0f22e207efd99b754bbff77108f6d4d2f831
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -5,6 +5,19 @@ rvm:
|
|
5
5
|
- 2.2.4
|
6
6
|
- 2.3.0
|
7
7
|
|
8
|
+
gemfile:
|
9
|
+
- gemfiles/4.0.gemfile
|
10
|
+
- gemfiles/4.1.gemfile
|
11
|
+
- gemfiles/4.2.gemfile
|
12
|
+
- gemfiles/5.0.gemfile
|
13
|
+
|
8
14
|
addons:
|
9
15
|
code_climate:
|
10
16
|
repo_token: abb288da5fac3efc45be30ffb37085314b9189ddccedf2cc68282777477e21c5
|
17
|
+
|
18
|
+
matrix:
|
19
|
+
exclude:
|
20
|
+
- rvm: 2.0.0
|
21
|
+
gemfile: gemfiles/5.0.gemfile
|
22
|
+
- rvm: 2.1.8
|
23
|
+
gemfile: gemfiles/5.0.gemfile
|
data/Appraisals
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
appraise "4.0" do
|
2
|
+
gem "activesupport", "~> 4.0.0"
|
3
|
+
gem "activerecord", "~> 4.0.0"
|
4
|
+
end
|
5
|
+
|
6
|
+
appraise "4.1" do
|
7
|
+
gem "activesupport", "~> 4.1.0"
|
8
|
+
gem "activerecord", "~> 4.1.0"
|
9
|
+
end
|
10
|
+
|
11
|
+
appraise "4.2" do
|
12
|
+
gem "activesupport", "~> 4.2.0"
|
13
|
+
gem "activerecord", "~> 4.2.0"
|
14
|
+
end
|
15
|
+
|
16
|
+
appraise "5.0" do
|
17
|
+
gem "activesupport", "~> 5.0.0"
|
18
|
+
gem "activerecord", "~> 5.0.0"
|
19
|
+
end
|
data/lib/saviour/config.rb
CHANGED
@@ -6,11 +6,27 @@ module Saviour
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
|
9
|
+
class << self
|
10
|
+
def processing_enabled
|
11
|
+
Thread.current["Saviour::Config"] ||= {}
|
12
|
+
Thread.current["Saviour::Config"][:processing_enabled] || true
|
13
|
+
end
|
14
|
+
|
15
|
+
def processing_enabled=(value)
|
16
|
+
Thread.current["Saviour::Config"] ||= {}
|
17
|
+
Thread.current["Saviour::Config"][:processing_enabled] = value
|
18
|
+
end
|
10
19
|
|
11
|
-
attr_accessor :storage, :processing_enabled
|
12
20
|
|
13
|
-
|
14
|
-
|
21
|
+
def storage
|
22
|
+
Thread.current["Saviour::Config"] ||= {}
|
23
|
+
Thread.current["Saviour::Config"][:storage] || Thread.main["Saviour::Config"][:storage] || NotImplemented.new
|
24
|
+
end
|
25
|
+
|
26
|
+
def storage=(value)
|
27
|
+
Thread.current["Saviour::Config"] ||= {}
|
28
|
+
Thread.current["Saviour::Config"][:storage] = value
|
29
|
+
end
|
30
|
+
end
|
15
31
|
end
|
16
32
|
end
|
data/lib/saviour/version.rb
CHANGED
data/saviour.gemspec
CHANGED
@@ -15,12 +15,13 @@ Gem::Specification.new do |spec|
|
|
15
15
|
|
16
16
|
spec.required_ruby_version = ">= 2.0.0"
|
17
17
|
|
18
|
-
spec.add_dependency "activerecord", ">=
|
19
|
-
spec.add_dependency "activesupport", ">=
|
18
|
+
spec.add_dependency "activerecord", ">= 4.0"
|
19
|
+
spec.add_dependency "activesupport", ">= 4.0"
|
20
20
|
spec.add_dependency "fog-aws"
|
21
21
|
spec.add_dependency "mime-types"
|
22
22
|
spec.add_development_dependency "bundler"
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
25
|
spec.add_development_dependency "sqlite3"
|
26
|
+
spec.add_development_dependency "appraisal"
|
26
27
|
end
|
@@ -11,10 +11,9 @@ describe "access to model data from uploaders" do
|
|
11
11
|
}
|
12
12
|
|
13
13
|
let(:klass) {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
a
|
14
|
+
klass = Class.new(Test) { include Saviour }
|
15
|
+
klass.attach_file :file, uploader
|
16
|
+
klass
|
18
17
|
}
|
19
18
|
|
20
19
|
describe "file store" do
|
@@ -81,7 +81,13 @@ describe "saving a new file" do
|
|
81
81
|
it "don't create anything if save do not completes (halt during before_save)" do
|
82
82
|
klass = Class.new(Test) do
|
83
83
|
attr_accessor :fail_at_save
|
84
|
-
before_save {
|
84
|
+
before_save {
|
85
|
+
if ActiveRecord.version >= Gem::Version.new("5.0")
|
86
|
+
throw(:abort) if fail_at_save
|
87
|
+
else
|
88
|
+
!fail_at_save
|
89
|
+
end
|
90
|
+
}
|
85
91
|
include Saviour
|
86
92
|
end
|
87
93
|
klass.attach_file :file, uploader
|
data/spec/models/config_spec.rb
CHANGED
@@ -11,14 +11,30 @@ describe Saviour::Config do
|
|
11
11
|
expect(Saviour::Config.storage).to eq :test
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
describe "threading behaviour" do
|
15
|
+
it "is thread-safe" do
|
16
|
+
(0.upto(1_000)).map do |x|
|
17
|
+
Thread.new do
|
18
|
+
Saviour::Config.storage = x
|
19
|
+
sleep 0.05 # Simulate work
|
20
|
+
expect(Saviour::Config.storage).to eq x
|
21
|
+
end
|
22
|
+
end.each(&:join)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "provides main value on new threads" do
|
26
|
+
Saviour::Config.storage = "chuck"
|
27
|
+
Thread.new { expect(Saviour::Config.storage).to eq("chuck") }.join
|
28
|
+
end
|
29
|
+
|
30
|
+
it "allows per-thread values" do
|
31
|
+
Saviour::Config.storage = 12
|
16
32
|
Thread.new do
|
17
|
-
Saviour::Config.storage =
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
end
|
33
|
+
Saviour::Config.storage = :foo
|
34
|
+
expect(Saviour::Config.storage).to eq :foo
|
35
|
+
end.join
|
36
|
+
expect(Saviour::Config.storage).to eq 12
|
37
|
+
end
|
22
38
|
end
|
23
39
|
end
|
24
40
|
end
|
data/spec/models/file_spec.rb
CHANGED
@@ -179,7 +179,7 @@ describe Saviour::File do
|
|
179
179
|
test_exception = Class.new(Exception)
|
180
180
|
|
181
181
|
begin
|
182
|
-
file.with_copy {|_| raise(test_exception, "some exception within the block") }
|
182
|
+
file.with_copy { |_| raise(test_exception, "some exception within the block") }
|
183
183
|
rescue test_exception
|
184
184
|
end
|
185
185
|
end
|
@@ -203,7 +203,7 @@ describe Saviour::File do
|
|
203
203
|
end
|
204
204
|
|
205
205
|
it "it's false when persisted and assigned" do
|
206
|
-
file = Saviour::File.new(uploader_klass, Test.create!(file:
|
206
|
+
file = Saviour::File.new(uploader_klass, Test.create!(file: "/mocked/path/file.rar"), :file)
|
207
207
|
expect(file).not_to be_blank
|
208
208
|
end
|
209
209
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,7 +21,19 @@ connection_opts = case ENV.fetch('DB', "sqlite")
|
|
21
21
|
ActiveRecord::Base.establish_connection(connection_opts)
|
22
22
|
|
23
23
|
ActiveRecord::Base.logger = Logger.new(STDOUT) if ENV['DEBUG']
|
24
|
+
|
25
|
+
def silence_stream(stream)
|
26
|
+
old_stream = stream.dup
|
27
|
+
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
|
28
|
+
stream.sync = true
|
29
|
+
yield
|
30
|
+
ensure
|
31
|
+
stream.reopen(old_stream)
|
32
|
+
old_stream.close
|
33
|
+
end
|
34
|
+
|
24
35
|
silence_stream(STDOUT) { require 'support/schema' }
|
36
|
+
|
25
37
|
require 'support/models'
|
26
38
|
|
27
39
|
RSpec.configure do |config|
|
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.
|
4
|
+
version: 0.2.3
|
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-
|
11
|
+
date: 2016-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: fog-aws
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: appraisal
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
description: File storage handler following active record model lifecycle
|
126
140
|
email:
|
127
141
|
- roger@rogercampos.com
|
@@ -131,10 +145,15 @@ extra_rdoc_files: []
|
|
131
145
|
files:
|
132
146
|
- ".gitignore"
|
133
147
|
- ".travis.yml"
|
148
|
+
- Appraisals
|
134
149
|
- Gemfile
|
135
150
|
- LICENSE.txt
|
136
151
|
- README.md
|
137
152
|
- Rakefile
|
153
|
+
- gemfiles/4.0.gemfile
|
154
|
+
- gemfiles/4.1.gemfile
|
155
|
+
- gemfiles/4.2.gemfile
|
156
|
+
- gemfiles/5.0.gemfile
|
138
157
|
- lib/saviour.rb
|
139
158
|
- lib/saviour/base_uploader.rb
|
140
159
|
- lib/saviour/config.rb
|