Carrierwave 버전 1.0.0rc를 사용하여 AWS S3 버킷에 파일을 업로드하고 처리합니다. 여기에 내 환경 :Carrierwave가 fog/aws gem을 사용하여 S3에 업로드하면 "No such file or directory @ rb_sysopen"이됩니다.
레일 4.2.0 루비 2.1.1 MiniMagick은 4.5.1 ImageMagick를 6.9.7-0
업로드 할 원본 이미지가 가로 또는 세로이고 가만히 있으면 내 업 로더 결정 그에 따라 처리 규칙을 적용하십시오. 파일 AWS S3 버킷에 업로드하지만 그때 나는 다음과 같은 오류를 얻을 : SponsorsController 번호에
errno를 :: ENOENT 없음 같은 파일 또는 디렉터리 @ rb_sysopen을 만들 수 없습니다 - 업로드/스폰서/로고/30/Breen_Electrical_Logo.jpg
추출 된 소스 코드가 강조 표시 :
class LogoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :landscape, if: :is_landscape?
version :portrait, if: :is_portrait?
version :landscape do
process resize_to_fit: [200, 50]
end
version :landscape_sm, from_version: :landscape do
process resize_to_fit: [100, 25]
end
version :portrait do
process resize_to_fit: [50, 200]
end
version :portrait_sm, from_version: :portrait do
process resize_to_fit: [25, 100]
end
private
def is_landscape? picture
image = MiniMagick::Image.open(picture.path)
image[:width] > image[:height]
end
def is_portrait? picture
image = MiniMagick::Image.open(picture.path)
image[:width] < image[:height]
end
end
홍보 :
여기 image = MiniMagick::Image.open(picture.path)
내 업 로더 코드 ivate 메소드는 폭과 높이 값을 비교하기 위해 파일을 여는 것처럼 보입니다. 이 작업은 로컬 공용 폴더에 파일을 저장할 때 잘 수행되었습니다. "picture.path"url이 파일을 열 때 S3 버킷 경로를 가리키고 있지 않습니다.
여기 내 /config/initializers/carrierwave.rb 파일
저도 같은 문제를 가진 다른 사람을 찾을 수 없습니다require 'fog/aws'
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws'
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: <access_key_id>,
aws_secret_access_key: <secret_access_key>,
region: 'us-west-2',
:path_style => true
}
config.fog_directory = <bucketname>
end
입니다. 어떤 아이디어? 미리 감사드립니다.
는 MiniMagick의 파일 방법이있을 나타나지 않습니다. 내가 설명하는대로 사용하려고하면 오류가 발생합니다. –
나는 당신의 코드를 읽는 것으로부터'그림'이 carrierwave 객체 (minimagick 객체가 아닌)가 될 것이라고 생각했다. 그래서 나는 적어도 carrierwave 오류가 발생할 것이라고 생각합니다. – geemus