레일 웨이 3 애플리케이션에서 carrierwave를 사용하여 원격 소스의 파일을 서버의 파일 시스템에 업로드하고 저장합니다. 이미지가 연관된 모델에 업 로더가 탑재 된 전적으로 표준 인 설정이 있습니다.carrierwave 업 로더가 파일을 업로드하지만 default_url을 계속 출력합니다.
완벽하게 99.9 %의 시간 동안 작동하지만 600 번째 그래프마다 앱이 저장된 이미지를 지속적으로 제공하지 못하는 문제가 발생합니다. 파일 시스템을 검사하면 그래프 이미지가 올 바르고 올바른 위치에 올바른 파일 권한과 모든 것을 저장하지만 레일은 완전히 인식하지 못하고 해당 인스턴스에 대한 기본 그래프 이미지를 계속 제공합니다.
즉, ID가 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/600 것입니다. 너무 이상합니다! – Bee
흠 ... gif/jpegs를 png로 변환하지 않고 파일 이름으로 png를 사용하고 있습니다 ... 우연히 그 이유가 무엇일까요? – omarvelous
이미지가 png로 생성되므로 파일 이름으로 png를 사용하고 있습니다. 다시 말하지만 업로드 된 이미지의 99.9 %에서 작동하지만 블루 문 (8200 개 중 8 개)에서는 특정 목표에 도달하지 못하고 지속적으로 모델을 업데이트하지 않고 기본 이미지를 계속 제공합니다. 나는 아직 그것을 아직 해결하지 못했다 :-) – Bee