4

모든 RubyGem의 버전. Ruby on Rails 3.1.3, Ruby 1.9.2, CarrierWave 0.5.8 및 Fog 1.1.2를 사용하고 있습니다.안개 및 Amazon S3가있는 공개 URL

이미지 업로드에는 CarrierWave RubyGem을 사용하고 Amazon S3 파일 업로드에는 Fog RubyGem을 사용하고 있습니다. 내 CarrierWave 초기화 파일에서

나는이 : 나는이 개 업 로더 파일을 데

class PageAttachmentUploader < CarrierWave::Uploader::Base 
CarrierWave.configure do |config| 
    if Rails.env.development? || Rails.env.development? || Rails.env.production? 
    config.fog_public = true 
    end 
    end 

storage :fog 
end 

:

CarrierWave.configure do |config| 
config.fog_credentials = { 
    provider: 'AWS', 
    aws_access_key_id: 'xxx', 
    aws_secret_access_key: 'xxx' 
    } 
    if Rails.env.production? 
    config.fog_directory = 'bucket1' 
    elsif Rails.env.development? 
    config.fog_directory = 'bucket2' 
    else 
    config.fog_directory = 'bucket3' 
    end 

    config.fog_public = false 
    config.fog_authenticated_url_expiration = 60 
end 

내가 업 로더 파일이 있습니다. 나는 사적인 것에, 그리고 한 사람은 공공에 맡기를 원한다.

PageAttachmentUploader가 호출 될 때 CarrierWave 구성을 덮어 쓰려고하고 URL을 공개로 설정하려고합니다. 이것은 로컬 머신의 매력처럼 작동하지만 스테이징, 샌드 박스 및 프로덕션에서는 작동하지 않습니다.

CarrierWave 인ializer에서 config.fog_public = true를 변경했습니다. 심지어 샌드 박스에서는 작동하지 않습니다. 이 문제를 어떻게 수정합니까?

답변

23

아니요, 각 업 로더뿐만 아니라 모든 업 로더의 기본 구성이 변경되므로 업 로더에서 직접 CarrierWave.configure를 사용하지 않아야합니다.

그 최선의 해결책인지 모르겠어요하지만 당신이처럼 업 로더에서 클래스 메소드를 설정하여 기본 안개 구성을 직접 변경할 수 있습니다 : 사실

class ImageUploader < CarrierWave::Uploader::Base 
    storage :fog 

    def self.fog_public 
    true # or false 
    end 
end 
+0

네, 맞습니다! fog_public : 나를 위해 일한 업 로더 파일에서 true. 감사! – user1286523

+1

다음이 답변을 투표하는 것을 잊지 마세요 :)! –

+0

나에게 도움이 안된다. –

1

, 가장 좋은 방법은 (내가 발견했습니다)는 다음 작업을 수행하는 것입니다.

이 방법으로 CarrierWave의 스타일과 더 비슷합니다.