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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68e8a4112de62c4fe7d28f634ba8b296a9c28602
4
- data.tar.gz: 696487d7c403c9d8792825cefec5991a81f1b3dd
3
+ metadata.gz: 5c2fca8190280a50014041a2989e1faa1ab76940
4
+ data.tar.gz: 49c26d990899a05d0b10ce48196c26429a0e8bff
5
5
  SHA512:
6
- metadata.gz: b6964d6d057e12efd48c702ad0928966c172d63f45579a8ab72df6fb07bfecf467167946b6a3267baaaee3a24f57165f2094f11937497bb64f70afe4587cd198
7
- data.tar.gz: 29ed2dd0ffd4cc4fade49f01455b8715f24d5302a904259399f8859a6f761feab9b707f38300b7adba17878b506d9051c750f0f509864f21abf9ac8c6993f2b5
6
+ metadata.gz: 06fa6cba605bc2d7f44043bd979189cf3b8ddeb27faee2dd14f7c77c6361910c5abe0de610562cdd5d21c56e41e636a8aefc5a1fe40a879a1e46c3175e3d08c3
7
+ data.tar.gz: 0075fc54313974fe0d8ca044ad9b749bc92368ad1053d2844b60bd8e518d2d4f311d596423fbe0598e7a94e77b6a0f22e207efd99b754bbff77108f6d4d2f831
data/.gitignore CHANGED
@@ -17,4 +17,5 @@ test/version_tmp
17
17
  tmp
18
18
  spec/support/test_data_dir/*
19
19
  .idea
20
- .rbenv-gemsets
20
+ .rbenv-gemsets
21
+ *.gemfile.lock
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
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "codeclimate-test-reporter", :group => :test, :require => nil
6
+ gem "activesupport", "~> 4.0.0"
7
+ gem "activerecord", "~> 4.0.0"
8
+
9
+ gemspec :path => "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "codeclimate-test-reporter", :group => :test, :require => nil
6
+ gem "activesupport", "~> 4.1.0"
7
+ gem "activerecord", "~> 4.1.0"
8
+
9
+ gemspec :path => "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "codeclimate-test-reporter", :group => :test, :require => nil
6
+ gem "activesupport", "~> 4.2.0"
7
+ gem "activerecord", "~> 4.2.0"
8
+
9
+ gemspec :path => "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "codeclimate-test-reporter", :group => :test, :require => nil
6
+ gem "activesupport", "~> 5.0.0"
7
+ gem "activerecord", "~> 5.0.0"
8
+
9
+ gemspec :path => "../"
@@ -6,11 +6,27 @@ module Saviour
6
6
  end
7
7
  end
8
8
 
9
- extend ActiveSupport::PerThreadRegistry
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
- self.processing_enabled = true
14
- self.storage = NotImplemented.new
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
@@ -1,3 +1,3 @@
1
1
  module Saviour
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
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", ">= 3.0"
19
- spec.add_dependency "activesupport", ">= 3.0"
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
- a = Class.new(Test)
15
- a.include Saviour
16
- a.attach_file :file, uploader
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 { !fail_at_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
@@ -11,14 +11,30 @@ describe Saviour::Config do
11
11
  expect(Saviour::Config.storage).to eq :test
12
12
  end
13
13
 
14
- it "is thread-safe" do
15
- (0.upto(1_000)).map do |x|
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 = x
18
- sleep 0.05 # Simulate work
19
- expect(Saviour::Config.storage).to eq x
20
- end
21
- end.each(&:join)
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
@@ -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: example_file), :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.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-06-08 00:00:00.000000000 Z
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: '3.0'
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: '3.0'
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: '3.0'
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: '3.0'
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