views:

274

answers:

1

I need to upload files and then parse them using paperclip?

Currently it is uploaded in the /system folder, which isn't allowed in heroku.

I don't need the uploads to be persistent...I parse it and then store them.

So I'd like to be able to save into /tmp and then parse, and then let it get blown away later.

Thoughts on how to do this (if I should do this)?

+1  A: 

Heroku's docs say to use Tempfile.

Well, it says in the doc:

There are two directories that are writeable: ./tmp and ./log (under your application root). If you wish to drop a file temporarily for the duration of the request, you can write to a filename like #{RAILS_ROOT}/tmp/myfile_#{Process.pid}. There is no guarantee that this file will be there on subsequent requests (although it might be), so this should not be used for any kind of permanent storage

Then, if you click on the Adam Wiggins link below that, he says this is available through the Tempfile interface.

Using Tempfile is easy, but your file may not exist if heroku considers read/write file operations different processes.

# tempfile_example.rb
require 'tempfile'

# defaults to Dir::tempdir
x = Tempfile.new('imagefile.png') 

puts x.path

Edit: The Answer

The answer is actually to set :path => " " ... but you were close.... – Angela

Jim Schubert
Hi there and thanks. Should I stick this code into the same controller where I am calling paperclip? I guess I'm not clear how to use this within a Paperclip environment since it is the paperclip gem which puts it into the system folder.
Angela
@Angela: I've never used paperclip, but it looks like you can specify the url in `has_attached_file` options, e.g. `:url => "/tmp/:attachment/:id/:style_:filename"`
Jim Schubert
That options is documented here: http://dev.thoughtbot.com/paperclip/classes/Paperclip/ClassMethods.html
Jim Schubert
The answer is actually to set :path => " " ... but you were close....
Angela