Rails - Использование Tempfile для записи на Heroku? - PullRequest
2 голосов
/ 05 декабря 2010

Мне нужно иметь возможность написать временный файл для использования только во время запроса.

Локально я могу успешно использовать следующее:

    tempfile = File.open(a.original_filename,'w')
    tempfile.write_nonblock(a.body)        
      paperclip stuff........
    tempfile.close 

Это прекрасно работает, но не наHeroku ... Как я могу сделать вышеизложенное с ограничениями Heroku: текст ссылки

Я не понимаю, как перевести это в: #{RAILS_ROOT}/tmp/myfile_#{Process.pid}

Спасибоза любую помощь вы можете оказать здесь.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2010

Вы пробовали tempfile = File.open("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w')?


Правильный синтаксис: tempfile = File.new("#{RAILS_ROOT}/tmp/myfile_#{Process.pid}",'w') (см. Комментарии)

0 голосов
/ 18 декабря 2010

У меня есть решение для вас, если вам нужно что-то делать со скрепкой.Включите этот класс в вашу папку lib как heroku_compliant_file.rb

class HerokuCompliantFile < StringIO
  def initialize(str,filename,content_type)
    @original_filename = filename
    @content_type = content_type
    super(str)
  end
end

В вашей модели, содержащей скрепку -

def insert_a_hunk_of_string_into_paperclip(some_object)
  f = HerokuCompliantFile.new(some_object.render,"myfile_#{Process.pid}","application/pdf")
  self.paperclip_model = f
  save
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...