paperclip-storage-ftp 1.2.3 → 1.2.4

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: 965bee3a7fee8dede0c34063a0a209287b9fb0f2
4
- data.tar.gz: f4bd05757450dc18aa71d08f3fbe32b2ca46017c
3
+ metadata.gz: 83e3386fa9770427df597a7fd756116877d00ca3
4
+ data.tar.gz: 50bf907a483309e1ac65ad24156a21b146386346
5
5
  SHA512:
6
- metadata.gz: daa7c2734901f9c1ecc5868aac8d6640634a2c6744becf55b5ac60b2c2a0fb855c4b6c9019c9cea3ffa57e15b978533b2826494e5840acdf5b3e26247c75a87f
7
- data.tar.gz: 38e7d597fe488f31e53217f1572e4e594caf46c639b6799853659276ad5b75212ecab6aea8e0681f76fe5b767c62b7ef4e8048c9e2db3bac5138bb15d64be4ca
6
+ metadata.gz: 509041e1f67837bb53ea17dfca8c19a169053a5535b3d8f2d599221bb8a1bc2798d83e6dd68efe7b37764c1c8e515cf84d93e6855b777ee3a4fcf2c0a870494f
7
+ data.tar.gz: 03a61d1b2f6a9e0bacf287902174f641adb74a353c55125a71d6977c5fa8b2d7ab0ec3aea039e8c3190edd6afbe7256e9e9067fd1fe51f9e3af98dee3584d1cd
data/.travis.yml CHANGED
@@ -1,14 +1,10 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.1
4
+ - 2.2
5
5
  - jruby-19mode
6
- - rbx
7
6
  gemfile:
8
- - gemfiles/Gemfile.paperclip-2.x
9
- - gemfiles/Gemfile.paperclip-3.x
10
7
  - gemfiles/Gemfile.paperclip-4.x
11
8
  matrix:
12
9
  allow_failures:
13
10
  - rvm: jruby-19mode
14
- - rvm: rbx
data/README.md CHANGED
@@ -37,8 +37,7 @@ In your model:
37
37
 
38
38
  ```ruby
39
39
  class User < ActiveRecord::Base
40
- has_attached_file :avatar,
41
-
40
+ has_attached_file :avatar, {
42
41
  # Choose the FTP storage backend
43
42
  :storage => :ftp,
44
43
 
@@ -79,11 +78,16 @@ class User < ActiveRecord::Base
79
78
  # If set to false and the connection to a particular server cannot be established,
80
79
  # a SystemCallError will be raised (Errno::ETIMEDOUT, Errno::ENETUNREACH, etc.).
81
80
  :ftp_ignore_failing_connections => true # optional, false by default
81
+ }
82
82
  end
83
83
  ```
84
84
 
85
85
  ## Changelog
86
86
 
87
+ ### 1.2.4
88
+
89
+ * Avoid unnecessary connection to server(s) when there are no files to be written or deleted [#26](https://github.com/xing/paperclip-storage-ftp/pull/26)
90
+
87
91
  ### 1.2.3
88
92
 
89
93
  * Rescue FTPPermError exception during `file_exists?` [#22](https://github.com/xing/paperclip-storage-ftp/pull/22)
@@ -124,7 +128,7 @@ Mostly performance enhancements
124
128
 
125
129
  You can find out more about our work on our [dev blog](http://devblog.xing.com).
126
130
 
127
- Copyright (c) 2014 [XING AG](http://www.xing.com)
131
+ Copyright (c) 2015 [XING AG](http://www.xing.com)
128
132
 
129
133
  Released under the MIT license. For full details see [LICENSE](https://github.com/xing/paperclip-storage-ftp/blob/master/LICENSE)
130
134
  included in this distribution.
@@ -8,10 +8,5 @@ group :test do
8
8
  gem "sqlite3", :platforms => :ruby
9
9
  gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
10
10
 
11
- gem "coveralls", :require => false
12
- end
13
-
14
- platforms :rbx do
15
- gem 'rubysl', '~> 2.0'
16
- gem 'json'
11
+ gem "coveralls", :require => false, :platforms => :ruby
17
12
  end
@@ -35,16 +35,18 @@ module Paperclip
35
35
  end
36
36
 
37
37
  def flush_writes
38
- with_ftp_servers do |servers|
39
- servers.map do |server|
40
- Thread.new do
41
- @queued_for_write.each do |style_name, file|
42
- remote_path = path(style_name)
43
- log("saving ftp://#{server.user}@#{server.host}:#{remote_path}")
44
- server.put_file(file.path, remote_path)
38
+ unless @queued_for_write.empty?
39
+ with_ftp_servers do |servers|
40
+ servers.map do |server|
41
+ Thread.new do
42
+ @queued_for_write.each do |style_name, file|
43
+ remote_path = path(style_name)
44
+ log("saving ftp://#{server.user}@#{server.host}:#{remote_path}")
45
+ server.put_file(file.path, remote_path)
46
+ end
45
47
  end
46
- end
47
- end.each(&:join)
48
+ end.each(&:join)
49
+ end
48
50
  end
49
51
 
50
52
  after_flush_writes # allows attachment to clean up temp files
@@ -53,18 +55,20 @@ module Paperclip
53
55
  end
54
56
 
55
57
  def flush_deletes
56
- with_ftp_servers do |servers|
57
- servers.map do |server|
58
- Thread.new do
59
- @queued_for_delete.each do |path|
60
- log("deleting ftp://#{server.user}@#{server.host}:#{path}")
61
- server.delete_file(path)
62
-
63
- log("deleting empty parent directories ftp://#{server.user}@#{server.host}:#{path}")
64
- server.rmdir_p(File.dirname(path))
58
+ unless @queued_for_delete.empty?
59
+ with_ftp_servers do |servers|
60
+ servers.map do |server|
61
+ Thread.new do
62
+ @queued_for_delete.each do |path|
63
+ log("deleting ftp://#{server.user}@#{server.host}:#{path}")
64
+ server.delete_file(path)
65
+
66
+ log("deleting empty parent directories ftp://#{server.user}@#{server.host}:#{path}")
67
+ server.rmdir_p(File.dirname(path))
68
+ end
65
69
  end
66
- end
67
- end.each(&:join)
70
+ end.each(&:join)
71
+ end
68
72
  end
69
73
 
70
74
  @queued_for_delete = []
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
13
13
  gem.name = "paperclip-storage-ftp"
14
14
  gem.require_paths = ["lib"]
15
- gem.version = "1.2.3"
15
+ gem.version = "1.2.4"
16
16
 
17
17
  gem.add_dependency("paperclip")
18
18
 
@@ -30,12 +30,12 @@ describe "paperclip-storage-ftp", :integration => true do
30
30
  user.avatar = file
31
31
  user.save!
32
32
 
33
- File.exists?(uploaded_file_server1).should be true
34
- File.exists?(uploaded_file_server1_medium).should be true
35
- File.exists?(uploaded_file_server1_thumb).should be true
36
- File.exists?(uploaded_file_server2).should be true
37
- File.exists?(uploaded_file_server2_medium).should be true
38
- File.exists?(uploaded_file_server2_thumb).should be true
33
+ File.exist?(uploaded_file_server1).should be true
34
+ File.exist?(uploaded_file_server1_medium).should be true
35
+ File.exist?(uploaded_file_server1_thumb).should be true
36
+ File.exist?(uploaded_file_server2).should be true
37
+ File.exist?(uploaded_file_server2_medium).should be true
38
+ File.exist?(uploaded_file_server2_thumb).should be true
39
39
 
40
40
  file.size.should == File.size(uploaded_file_server1)
41
41
  file.size.should == File.size(uploaded_file_server2)
@@ -47,13 +47,13 @@ describe "paperclip-storage-ftp", :integration => true do
47
47
 
48
48
  user.destroy
49
49
 
50
- File.exists?(uploaded_file_server1).should be false
51
- File.exists?(uploaded_file_server1_medium).should be false
52
- File.exists?(uploaded_file_server1_thumb).should be false
50
+ File.exist?(uploaded_file_server1).should be false
51
+ File.exist?(uploaded_file_server1_medium).should be false
52
+ File.exist?(uploaded_file_server1_thumb).should be false
53
53
 
54
- File.exists?(uploaded_file_server2).should be false
55
- File.exists?(uploaded_file_server2_medium).should be false
56
- File.exists?(uploaded_file_server2_thumb).should be false
54
+ File.exist?(uploaded_file_server2).should be false
55
+ File.exist?(uploaded_file_server2_medium).should be false
56
+ File.exist?(uploaded_file_server2_thumb).should be false
57
57
  end
58
58
 
59
59
  it "removes empty parent directories after image deletion" do
@@ -62,8 +62,8 @@ describe "paperclip-storage-ftp", :integration => true do
62
62
 
63
63
  user.destroy
64
64
 
65
- Dir.exists?(File.dirname(uploaded_file_server1)).should be false
66
- Dir.exists?(File.dirname(uploaded_file_server2)).should be false
65
+ Dir.exist?(File.dirname(uploaded_file_server1)).should be false
66
+ Dir.exist?(File.dirname(uploaded_file_server2)).should be false
67
67
  end
68
68
 
69
69
  it "does not remove parent directories which are not empty" do
@@ -74,7 +74,7 @@ describe "paperclip-storage-ftp", :integration => true do
74
74
 
75
75
  user.destroy
76
76
 
77
- File.exists?(uploaded_file_server1_other).should be true
77
+ File.exist?(uploaded_file_server1_other).should be true
78
78
  end
79
79
 
80
80
  it "survives temporarily closed ftp connections" do
@@ -89,8 +89,8 @@ describe "paperclip-storage-ftp", :integration => true do
89
89
  user.avatar = file
90
90
  user.save!
91
91
 
92
- File.exists?(uploaded_file_server1).should be true
93
- File.exists?(uploaded_file_server2).should be true
92
+ File.exist?(uploaded_file_server1).should be true
93
+ File.exist?(uploaded_file_server2).should be true
94
94
  end
95
95
 
96
96
  it "allows ignoring failed connections" do
@@ -98,12 +98,12 @@ describe "paperclip-storage-ftp", :integration => true do
98
98
  user.avatar = file
99
99
  expect{ user.save! }.to_not raise_error
100
100
 
101
- File.exists?(uploaded_file_server1).should be true
102
- File.exists?(uploaded_file_server1_medium).should be true
103
- File.exists?(uploaded_file_server1_thumb).should be true
104
- File.exists?(uploaded_file_server2).should be false
105
- File.exists?(uploaded_file_server2_medium).should be false
106
- File.exists?(uploaded_file_server2_thumb).should be false
101
+ File.exist?(uploaded_file_server1).should be true
102
+ File.exist?(uploaded_file_server1_medium).should be true
103
+ File.exist?(uploaded_file_server1_thumb).should be true
104
+ File.exist?(uploaded_file_server2).should be false
105
+ File.exist?(uploaded_file_server2_medium).should be false
106
+ File.exist?(uploaded_file_server2_thumb).should be false
107
107
  end
108
108
 
109
109
  it "raises a SystemCallError when not ignoring failed connections" do
@@ -80,6 +80,17 @@ describe Paperclip::Storage::Ftp do
80
80
  end
81
81
 
82
82
  context "#flush_writes" do
83
+ it "doesn't connect to the servers if there is nothing to write" do
84
+ attachment.instance_variable_set(:@queued_for_write, {})
85
+
86
+ attachment.should_not_receive(:with_ftp_servers)
87
+ attachment.should_receive(:after_flush_writes).with(no_args)
88
+
89
+ attachment.flush_writes
90
+
91
+ attachment.queued_for_write.should == {}
92
+ end
93
+
83
94
  it "stores the files on every server" do
84
95
  original_file = double("original_file", :path => "/tmp/original/foo.jpg")
85
96
  thumb_file = double("thumb_file", :path => "/tmp/thumb/foo.jpg")
@@ -105,6 +116,16 @@ describe Paperclip::Storage::Ftp do
105
116
  end
106
117
 
107
118
  context "#flush_deletes" do
119
+ it "doesn't connect to the servers if there is nothing to delete" do
120
+ attachment.instance_variable_set(:@queued_for_delete, [])
121
+
122
+ attachment.should_not_receive(:with_ftp_servers)
123
+
124
+ attachment.flush_deletes
125
+
126
+ attachment.instance_variable_get(:@queued_for_delete).should == []
127
+ end
128
+
108
129
  it "deletes the files on every server" do
109
130
  attachment.instance_variable_set(:@queued_for_delete, [
110
131
  "/files/original/foo.jpg",
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,7 @@
1
- require "simplecov"
2
- require "coveralls"
3
-
4
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5
- SimpleCov.start do
6
- add_filter "spec"
1
+ begin
2
+ require "coveralls"
3
+ Coveralls.wear!
4
+ rescue LoadError
7
5
  end
8
6
 
9
7
  RSpec.configure do |config|
@@ -22,5 +20,5 @@ require "paperclip/storage/ftp"
22
20
 
23
21
  Paperclip.options[:log] = false
24
22
 
25
- # https://github.com/thoughtbot/cocaine#jruby-caveat
23
+ # https://github.com/thoughtbot/cocaine#caveat
26
24
  Cocaine::CommandLine.runner = Cocaine::CommandLine::BackticksRunner.new
data/test-all.sh CHANGED
@@ -14,13 +14,13 @@ else
14
14
  printf "ERROR: An RVM installation was not found.\n"
15
15
  fi
16
16
 
17
- for ruby in '1.9.3' '2.1' 'jruby --1.9' 'rbx'
17
+ for ruby in '2.1' '2.2' 'jruby --1.9'
18
18
  do
19
19
  rvm try_install $ruby
20
20
  rvm use $ruby
21
21
  gem install bundler --conservative --no-rdoc --no-ri
22
22
 
23
- for paperclip_version in 2 3 4
23
+ for paperclip_version in 4
24
24
  do
25
25
  gemfile="gemfiles/Gemfile.paperclip-${paperclip_version}.x"
26
26
  bundle install --gemfile=$gemfile
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip-storage-ftp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Röbke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-28 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paperclip
@@ -93,8 +93,6 @@ files:
93
93
  - LICENSE
94
94
  - README.md
95
95
  - Rakefile
96
- - gemfiles/Gemfile.paperclip-2.x
97
- - gemfiles/Gemfile.paperclip-3.x
98
96
  - gemfiles/Gemfile.paperclip-4.x
99
97
  - lib/paperclip/storage/ftp.rb
100
98
  - lib/paperclip/storage/ftp/server.rb
@@ -157,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
155
  version: '0'
158
156
  requirements: []
159
157
  rubyforge_project:
160
- rubygems_version: 2.2.2
158
+ rubygems_version: 2.4.5
161
159
  signing_key:
162
160
  specification_version: 4
163
161
  summary: Allow Paperclip attachments to be stored on FTP servers
@@ -1,19 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec :path => '..'
4
-
5
- gem "paperclip", "~>2.0"
6
-
7
- group :test do
8
- gem "activerecord", "~>3.0"
9
-
10
- gem "sqlite3", :platforms => :ruby
11
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
12
-
13
- gem "coveralls", :require => false
14
- end
15
-
16
- platforms :rbx do
17
- gem 'rubysl', '~> 2.0'
18
- gem 'json'
19
- end
@@ -1,17 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec :path => '..'
4
-
5
- gem "paperclip", "~>3.0"
6
-
7
- group :test do
8
- gem "sqlite3", :platforms => :ruby
9
- gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
10
-
11
- gem "coveralls", :require => false
12
- end
13
-
14
- platforms :rbx do
15
- gem 'rubysl', '~> 2.0'
16
- gem 'json'
17
- end