2011-11-28 3 views
1

Cant는 S3가 spree와 함께 작동 할 수있는 방법을 찾습니다. 저를위한 몇몇 주옥이 존재하는 것을 보이고 그러나 나를 위해 일하는 것을 보이지 않는다.Amazon S3 및 Spree 설정

레일 3.1.1을 실행 0.70.3으로 실행.

+0

지금까지 해보신 것은 무엇입니까? 어떤 오류가 발생 했습니까? 그것이 작동하지 않는다고 말하는 것은 실제로 도움이되지 않습니다. – leonardoborges

+0

나는 followin 보석 https://github.com/dylanmei/spree-s3.git, 또는 또한 https://github.com/thoughtful/spree-s3.git를 시도했다 나는 둘 다에 존재하지 않는다 엔티티는 존재하지 않을 때 레이크를 실행합니다. spree_s3 : install – elkalto23

답변

9

나는 레일 3.0.10 및 마구 0.60을 실행하고 모두해야 다음 과정을 수행하여 응용 프로그램의 공용 폴더에 쓰기를 통해 S3 스토리지를 사용하는 행위를 얻을 수 있었다입니다.

설치하여 Gemfile

gem 'aws-s3' 

번들 내가 config 디렉토리라는 s3.yml에서 YAML 파일을 생성하고 다음과 같이 보일 것을 수행 한 후 AWS-S3 보석을 추가합니다.

development: &DEFAULTS 
    bucket: "YOUR_BUCKET" 
    access_key_id: "YOUR_ACCESS_KEY" 
    secret_access_key: "YOUR_ACCESS_SECRET" 

test: 
    <<: *DEFAULTS 
    bucket: "YOUR_BUCKET" 

production: 
    <<: *DEFAULTS 
    bucket: "YOUR_BUCKET" 

만약 당신이 좋아하면 당신은 환경에 따라 개인의 자격 증명을 지정할 수 있지만 내 모두 같은 S3의 accont을 사용하고 있기 때문에 나는 기본값을 설정하는 선택했다.

그 후 당신은 이미지 모델을 무시하거나 S3를 사용하고 자격 증명을 만든 YAML 파일을 구문 분석하도록 클립을 알려줍니다 당신의 장식을해야 할 것입니다.

당신이 필요하지만 무슨 중요한 것은 당신이 지정한대로이

has_attached_file :attachment, 
       :styles => {:mini => '48x48>', :small => '200x100>', :product => '240x240>', :large => '600x600>'}, 
       :default_style => :small, 
       :storage => :s3, 
       :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", 
       :url => "/assets/products/:id/:style/:basename.:extension", 
       :path => ":rails_root/public/assets/products/:id/:style/:basename.:extension" 

이러한 속성을 변경할 수 있습니다 것 오버라이드 (override) 할 할 영역 : 스토리지 : s3_credentials을.

+1

Spree를 최신 버전 (예 : 1.0.x)에 부딪치게되면 이전 버전이 사용되지 않으므로 보석을 aws-s3에서 aws-sdk로 변경하는 것이 좋습니다. 다른 빠른 방법은 spree-heroku extension https://github.com/joneslee85/spree-heroku를 사용하는 것입니다. Spree 1.1.x를 사용하는 경우 확장 프로그램을 설치하거나 모델을 덮어 쓸 필요가 없으며 관리자 설정에서 구성 할 수 있습니다. 희망이 도움이됩니다. –

3

현재 Spree의 버전에서는 관리 도구에서이 값을 설정할 수 있습니다. 하지만 이미지 모델을 덮어 쓰지 않고 코드 으로 유지하려는 경우 config/initializers/spree.rb에서이 값을 설정할 수 있습니다. 관리자 포털을 통해 편집하지 않도록하십시오.

S3_CONFIG = YAML.load_file("#{Rails.root}/config/s3.yml")[Rails.env] 

Spree.config do |config| 
    config.attachment_styles = ActiveSupport::JSON.encode({ 
     "mini" => "100x100>", 
     "small" => "200x200>", 
     "medium" => "400x600>", 
     "product" => "400x600>", 
     "large" => "600x600>", 
     "xl" => "800x800>", 
     "xxl" => "1200x1200>", 

    }) 

    #AWS S3 
    config.use_s3 = true 
    config.s3_bucket = S3_CONFIG['bucket'] 
    config.s3_access_key = S3_CONFIG['access_key_id'] 
    config.s3_secret = S3_CONFIG['secret_access_key'] 
    config.attachment_url = 'products/:id/:style/:basename.:extension' 
    config.attachment_path = 'products/:id/:style/:basename.:extension' 
end