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 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