# Net::FTP impossibile caricare file

**URL:** <https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714>\
**Category:** IT\
**Created:** [July 1, 2013, 2:55pm UTC](https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714 "2013-07-01T14:55:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [July 1, 2013, 2:55pm UTC](https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714/1 "2013-07-01T14:55:24Z")

</div>

Ciao a tutti,

ho un problema fastidioso su del codice Ruby in un’applicazione Rails su  
staging.

In sostanza: esiste un task lanciato da rake che prende un file su disco  
e lo carica tramite FTP su un altro server.

Testato in sviluppo e funziona senza problemi.

Sul server di staging invece viene stabilita la connessione, esegue il  
login crea il file vuoto (0 bytes) col nome corretto e poi … più  
nulla!

Rimane sospesa l’operazione di put e non sembra trasferire il file  
(provando a verificare con un altro client come Filezilla).

Se fosse sbagliato l’host e le credenziali dovrei avere subito errore.  
Se fosse un problema di permessi non dovrebbe nemmeno scrivere il file  
sul Filesystem remoto come invece fa.

Nulla il file rimane a 0 Bytes e il task Ruby “bloccato” in esecuzione.

Questo il corpo del task

begin  
f = “percorso/al/nomefile.csv”  
Net::FTP.open(ENV[‘ftp.host’], ENV[‘ftp.user’], ENV[‘ftp.pwd’]) do  
|ftp|  
ts = Time.now.strftime("%Y%m%d%H%M%S")  
ftp.chdir(ENV[‘ftp.dir’]) unless ENV[‘ftp.dir’].nil?  
ftp.put(f, “nomefile” + ts + “.csv”)  
ftp.close()  
end  
File.delete(f)  
rescue Exception =\> ex  
puts "Si è verificato un errore durante il trasferimento via FTP:  
" + ex.message  
raise ex  
end

Da cosa potrebbe dipendere?  
Grazie in anticipo.

---

<div class="post-metadata">

**Author:** ![sgurbat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/9de0a6/32.png) [@sgurbat](https://www.ruby-forum.com/u/sgurbat)\
**Post date:** [July 1, 2013, 3:12pm UTC](https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714/2 "2013-07-01T15:12:27Z")

</div>

usa la modalit passiva prima di effettuareoperazioni. se stai usando  
rails, questo dovrebbe funzionare:

Net::FTP.open(host, user, pass) do |ftp|  
ftp.passive = Rails.env.production?

# …

end

ciao,  
A.

Il giorno 01/lug/2013, alle ore 14:55, Yuri R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> Sul server di staging invece viene stabilita la connessione, esegue il  
> Nulla il file rimane a 0 Bytes e il task Ruby “bloccato” in esecuzione.  
> ftp.close()  
> Da cosa potrebbe dipendere?  
> Grazie in anticipo.
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
[http://andreapavoni.com](http://andreapavoni.com)

---

<div class="post-metadata">

**Author:** ![sgurbat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/9de0a6/32.png) [@sgurbat](https://www.ruby-forum.com/u/sgurbat)\
**Post date:** [July 1, 2013, 3:07pm UTC](https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714/3 "2013-07-01T15:07:45Z")

</div>

On Monday, July 1, 2013 at 2:55 PM, Yuri R. wrote:

> Sul server di staging invece viene stabilita la connessione, esegue il  
> Nulla il file rimane a 0 Bytes e il task Ruby “bloccato” in esecuzione.  
> ftp.close()  
> Da cosa potrebbe dipendere?  
> Grazie in anticipo.
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ([mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid))  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

Leggendo la doc [1] credo di aver capito che di default la connessione è  
in modalità “attiva” [2], il che può creare problemi in presenza di  
firewall sulla macchina client.

Ti consiglio di provare a settarla in modalità “passiva” tramite  
ftp.passive = true  
prima di effettuare  
ftp.put(…)

In modalità passiva, il server comunica una porta al client, su cui  
starà in ascolto per il trasferimento dei dati. In modalità attiva è il  
contrario.

Federico

[1] [Class: Net::FTP (Ruby 1.9.3)](http://ruby-doc.org/stdlib-1.9.3/libdoc/net/ftp/rdoc/Net/FTP.html)  
[2]  
[File Transfer Protocol - Wikipedia](https://en.wikipedia.org/wiki/File_Transfer_Protocol#Communication_and_data_transfer)

---

<div class="post-metadata">

**Author:** ![sgurbat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/9de0a6/32.png) [@sgurbat](https://www.ruby-forum.com/u/sgurbat)\
**Post date:** [July 2, 2013, 8:08am UTC](https://www.ruby-forum.com/t/net-ftp-impossibile-caricare-file/245714/4 "2013-07-02T08:08:22Z")

</div>

Vi ringrazio,

in effetti è bastato specificare la modalità passiva.

😉
