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