remote_files 1.5.1 → 1.6.0

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.
data/lib/remote_files.rb CHANGED
@@ -24,6 +24,16 @@ module RemoteFiles
24
24
  CONFIGURATIONS[name.to_sym].from_hash(hash)
25
25
  end
26
26
 
27
+ def self.logger=(logger)
28
+ @logger = logger
29
+ end
30
+
31
+ def self.logger
32
+ return @logger if defined?(@logger)
33
+
34
+ @logger ||= defined?(Rails) ? Rails.logger : nil
35
+ end
36
+
27
37
  def self.add_store(store_identifier, options = {}, &block)
28
38
  default_configuration.add_store(store_identifier, options, &block)
29
39
  end
@@ -11,6 +11,14 @@ module RemoteFiles
11
11
  from_hash(config)
12
12
  end
13
13
 
14
+ def logger=(logger)
15
+ @logger = logger
16
+ end
17
+
18
+ def logger
19
+ @logger ||= RemoteFiles.logger
20
+ end
21
+
14
22
  def clear
15
23
  @stores.clear
16
24
  @stores_map.clear
@@ -85,6 +93,7 @@ module RemoteFiles
85
93
  file.stored_in << store.identifier
86
94
  break
87
95
  rescue ::RemoteFiles::Error => e
96
+ file.logger.info(e) if file.logger
88
97
  exception = e
89
98
  end
90
99
  end
@@ -13,9 +13,18 @@ module RemoteFiles
13
13
  @content = options.delete(:content)
14
14
  @content_type = options[:content_type]
15
15
  @configuration = RemoteFiles::CONFIGURATIONS[(options[:configuration] || :default).to_sym]
16
+ @logger = options[:logger]
16
17
  @options = options
17
18
  end
18
19
 
20
+ def logger=(logger)
21
+ @logger = logger
22
+ end
23
+
24
+ def logger
25
+ @logger ||= configuration ? configuration.logger : RemoteFiles.logger
26
+ end
27
+
19
28
  def self.from_url(url)
20
29
  RemoteFiles.default_configuration.file_from_url(url)
21
30
  end
@@ -1,3 +1,3 @@
1
1
  module RemoteFiles
2
- VERSION = '1.5.1'
2
+ VERSION = '1.6.0'
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'logger'
1
2
  require_relative 'test_helper'
2
3
  require 'remote_files/mock_store'
3
4
 
@@ -9,6 +10,25 @@ describe RemoteFiles::Configuration do
9
10
  @mock_store2 = @configuration.add_store(:mock2, :class => RemoteFiles::MockStore)
10
11
  end
11
12
 
13
+ describe '#logger' do
14
+ it 'defaults to RemoteFiles.logger' do
15
+ logger = Logger.new($stdout)
16
+ RemoteFiles.logger = logger
17
+ configuration_logger = @configuration.logger
18
+ RemoteFiles.logger = nil
19
+
20
+ configuration_logger.must_equal logger
21
+
22
+ new_logger = Logger.new($stdout)
23
+
24
+ @configuration.logger = new_logger
25
+ @configuration.logger.must_equal new_logger
26
+
27
+ @configuration.logger = nil
28
+ @configuration.logger.must_be_nil
29
+ end
30
+ end
31
+
12
32
  describe '::add_store' do
13
33
  describe 'when adding a non-primary store' do
14
34
  before { @non_primary_store = @configuration.add_store(:primary) }
@@ -64,6 +84,8 @@ describe RemoteFiles::Configuration do
64
84
 
65
85
  describe 'when the first store fails' do
66
86
  before do
87
+ @log = StringIO.new
88
+ @file.logger = Logger.new(@log)
67
89
  @mock_store1.expects(:store!).with(@file).raises(RemoteFiles::Error)
68
90
  @configuration.store_once!(@file)
69
91
  end
@@ -72,6 +94,10 @@ describe RemoteFiles::Configuration do
72
94
  @mock_store1.data['file'].must_be_nil
73
95
  @mock_store2.data['file'].must_equal(:content => 'content', :content_type => 'text/plain')
74
96
  end
97
+
98
+ it 'logs that the first store failed' do
99
+ @log.string.must_match /RemoteFiles::Error/
100
+ end
75
101
  end
76
102
 
77
103
  describe 'when alls stores fail' do
data/test/file_test.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'logger'
1
2
  require_relative 'test_helper'
2
3
 
3
4
  describe RemoteFiles::File do
@@ -8,6 +9,27 @@ describe RemoteFiles::File do
8
9
  @file = RemoteFiles::File.new('identifier')
9
10
  end
10
11
 
12
+ describe '#logger' do
13
+ it 'defaults to the configuration logger' do
14
+ configuration_logger = Logger.new($stdout)
15
+ configuration = RemoteFiles.configure(:test)
16
+ configuration.logger = configuration_logger
17
+
18
+ file = RemoteFiles::File.new('identifier', :configuration => :test)
19
+ file.logger.must_equal configuration_logger
20
+
21
+ new_logger = Logger.new($stdout)
22
+ file.logger = new_logger
23
+ file.logger.must_equal new_logger
24
+ end
25
+
26
+ it 'is settable at initialization' do
27
+ logger = Logger.new($stdout)
28
+ file = RemoteFiles::File.new('identifier', :logger => logger)
29
+ file.logger.must_equal logger
30
+ end
31
+ end
32
+
11
33
  describe '#stored?' do
12
34
  it 'should return true if the file is stored anywhere' do
13
35
  @file.stored_in << :s3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_files
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-28 00:00:00.000000000 Z
12
+ date: 2012-12-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -148,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
148
  version: '0'
149
149
  segments:
150
150
  - 0
151
- hash: -2269373992954877805
151
+ hash: 424450237323346317
152
152
  required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  none: false
154
154
  requirements:
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  version: '0'
158
158
  segments:
159
159
  - 0
160
- hash: -2269373992954877805
160
+ hash: 424450237323346317
161
161
  requirements: []
162
162
  rubyforge_project:
163
163
  rubygems_version: 1.8.24