olek-paperclipftp 0.1.0.6 → 0.1.0.7

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.
Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/paperclipftp.rb +32 -28
  3. metadata +3 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0.6
1
+ 0.1.0.7
data/lib/paperclipftp.rb CHANGED
@@ -9,7 +9,8 @@ module Paperclip
9
9
  @ftp_credentials = parse_credentials(@options[:ftp_credentials])
10
10
  @passive_mode = !!@options[:ftp_passive_mode]
11
11
  @debug_mode = !!@options[:ftp_debug_mode]
12
- @timeout = @options[:timeout] || 3600
12
+ @verify_size = !!@options[:ftp_verify_size_on_upload]
13
+ @timeout = @options[:ftp_timeout] || 3600
13
14
  end
14
15
  end
15
16
 
@@ -46,14 +47,26 @@ module Paperclip
46
47
  @queued_for_write.each do |style, file|
47
48
  Timeout::timeout(@timeout, FtpTimeout) do
48
49
  file.close
49
- # avoiding those weird occasional 0 file sizes by not using instance method file.size
50
- local_file_size = File.size(file.path)
51
50
  remote_path = ftp_path(style)
52
- ensure_parent_folder_for(remote_path)
53
51
  log("uploading #{remote_path}")
54
- ftp.putbinaryfile(file.path, remote_path)
55
- remote_file_size = file_size(remote_path)
56
- raise Net::FTPError.new "Uploaded #{remote_file_size} bytes instead of #{local_file_size} bytes" unless remote_file_size == local_file_size
52
+ first_try = true
53
+ begin
54
+ ftp.putbinaryfile(file.path, remote_path)
55
+ rescue Net::FTPPermError => e
56
+ if first_try
57
+ first_try = false
58
+ ensure_parent_folder_for(remote_path)
59
+ retry
60
+ else
61
+ raise e
62
+ end
63
+ end
64
+ if @verify_size
65
+ # avoiding those weird occasional 0 file sizes by not using instance method file.size
66
+ local_file_size = File.size(file.path)
67
+ remote_file_size = file_size(remote_path)
68
+ raise Net::FTPError.new "Uploaded #{remote_file_size} bytes instead of #{local_file_size} bytes" unless remote_file_size == local_file_size
69
+ end
57
70
  end
58
71
  end
59
72
  @queued_for_write = {}
@@ -88,28 +101,19 @@ module Paperclip
88
101
 
89
102
  def ensure_parent_folder_for(remote_path)
90
103
  dir_path = File.dirname(remote_path)
91
- already_exists =
104
+ ftp.chdir("/")
105
+ dir_path.split(File::SEPARATOR).each do |rdir|
106
+ next if rdir.blank?
107
+ first_time = true
92
108
  begin
93
- ftp.chdir(dir_path)
94
- true
95
- rescue Net::FTPPermError
96
- false
97
- end
98
- unless already_exists
99
- ftp.chdir("/")
100
- dir_path.split(File::SEPARATOR).each do |rdir|
101
- next if rdir.blank?
102
- first_time = true
103
- begin
104
- ftp.chdir(rdir)
105
- rescue Net::FTPPermError => e
106
- if first_time
107
- ftp.mkdir(rdir)
108
- first_time = false
109
- retry
110
- else
111
- raise e
112
- end
109
+ ftp.chdir(rdir)
110
+ rescue Net::FTPPermError => e
111
+ if first_time
112
+ ftp.mkdir(rdir)
113
+ first_time = false
114
+ retry
115
+ else
116
+ raise e
113
117
  end
114
118
  end
115
119
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: olek-paperclipftp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 75
4
+ hash: 73
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
9
  - 0
10
- - 6
11
- version: 0.1.0.6
10
+ - 7
11
+ version: 0.1.0.7
12
12
  platform: ruby
13
13
  authors:
14
14
  - Damian Caruso