загрузчик, загружаемый оператором, загружает файл, но по-прежнему обслуживает default_url - PullRequest
3 голосов
/ 03 января 2012

Я использую carrierwave в приложении rails 3 для загрузки и сохранения файла из удаленного источника в файловой системе моего сервера. У меня есть полностью стандартная настройка с загрузчиком, смонтированным на модели, с которой связан образ.

Он отлично работает в 99,9% случаев, но каждый 600-й график или около того я сталкиваюсь с проблемой, когда приложение постоянно не может обслуживать сохраненное изображение. Если я проверю файловую систему, изображение графика будет загружено и сохранено в правильном месте, с правильными правами доступа к файлам и тому подобному, но rails об этом не знает и продолжает обслуживать изображение графика по умолчанию для этого экземпляра.

Другими словами, граф с идентификатором 123 хранит свое изображение в /uploads/graphs/123/graph.png ... правильное изображение есть, но что касается рельсов, у него нет сохраненного изображения. Все остальные графические изображения по-прежнему работают нормально, но я не могу заставить рельсы узнать об изображении, сохраненном для 123. Удаление и восстановление изображения не работает. Удаление изображения и повторная загрузка вручную не работает. Я полностью потерян. Экземпляр графа действителен, в журналах нет ошибок при сохранении.

например, в консоли:

g = Goal.find_by_id("123")
g.remote_graph_url = "http://image.source/url.png"
> "http://image.source/url.png"
g.save
> true
g.graph?
> false
g.graph_url >> /default/image.png

вот соответствующий код:

class GraphUploader < CarrierWave::Uploader::Base
  def store_dir
    "../uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  def default_url
    "/images/" + [version_name, "default_large_graph.png"].compact.join('_')
  end
  def extension_white_list
    %w(jpg jpeg gif png)
  end
  def filename
    "graph.png" if original_filename
  end
end

class Graph 
  mount_uploader :graph, GraphUploader
end

1 Ответ

0 голосов
/ 05 января 2012

Хотел бы я просто ответить ...

Значит, вы сохраняете закачки вне публичного каталога?Попробуйте удалить "../" перед изображениями, если это не было вашим намерением.

...