I am using the Rails console to move some files from one site to another. 
Inside a loop, I use the technique* advised in the Paperclip wiki to set the 
remote_url of the attachment to the correct URL, and then call save on the 
model, which copies the file over and runs it through the various 
resize/transcode steps defined in my attachment. Unfortunately, this does not 
seem to clean up after itself correctly, and I end up with a zillion files in 
the temp folder, and yesterday the server ran out of free space and stopped 
working.

I used ensure to clean up, but that's not a very friendly solution except when 
nobody else is using the server.

Asset.current.where('assets.id > 31061').find_each do |a|
  begin
    # raw_file on the remote site returns a string with the URL of the file on 
S3
    a.blob_remote_url = open("http://example.org/assets/#{a.id}/raw_file";).read
    a.save
  rescue
    a.destroy
  ensure
    FileUtils.rm Dir.glob('/tmp/*.jpg')
    FileUtils.rm Dir.glob('/tmp/*.JPG')
    FileUtils.rm Dir.glob('/tmp/*.mov')
    FileUtils.rm Dir.glob('/tmp/*.MOV')
    FileUtils.rm Dir.glob('/tmp/*.mp4')
    FileUtils.rm Dir.glob('/tmp/open-uri*')
  end
end

Inside the Paperclip gem, the URI adapter uses open-uri and the open call to 
get a handle on the remote file, and since it's used inside a block, that 
handle should collapse when the request is done and be garbage collected. I 
don't see where the temp file is being created, or why it lingers.

Is the issue because I am inside an irb loop? Does that have some separate 
context that prevents garbage collection?

Thanks,

Walter

*https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/7BA50553-470E-498A-9495-95CF2BEF709C%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to