2012-03-05 4 views
1

레일 3.2.1, 반송파 0.5.8, 안개 1.1.2, rmagick 2.13.1을 사용 중입니다.반송파 heroku - 계속 오류 메시지가 표시됨

amazon s3에 제품 사진을 업로드하려고하는데 웹에서 찾은 carrierwave.rb 초기화 파일의 순열에 관계없이이 오류 메시지가 계속 나타납니다.), 아무 것도 작동하지 않는 것 같습니다. 내 S3 버켓에 업로드 된 것도 없습니다. 내가 시도한 다른 버전에 대해 동일한 오류 메시지가 표시됩니다. 내 컨트롤러에 뭔가있을 수 있지만 무엇을 여행 할 수 있을지 모르겠습니다. 도와주세요! Heroku가 발

에러 로그 MSG :

2012-03-05T06:35:18+00:00 app[web.1]: app/controllers/products_controller.rb:40:in `update' 
2012-03-05T06:35:18+00:00 app[web.1]: ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key): 
2012-03-05T06:35:18+00:00 app[web.1]: cache: [POST /products/3] invalidate, pass 

carrierwave 이니셜

CarrierWave.configure do |config| 
if Rails.env.production? 
    config.storage = :fog 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    :aws_access_key_id  => 'access_key', 
    :aws_secret_access_key => 'secret_access_key', 
    :region    => 'us-east-1' 
    } 


config.fog_directory = 'bucket_name' 
config.fog_public  = true         
config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 

else 
    #for development and testing locally 
    config.storage = :file 
    config.enable_processing = false 
end 
end 

image_uploader

include CarrierWave::RMagick 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb_pic do 
    process :resize_to_limit => [170, 170] 
    end 
end 

컨트롤러는

def create 
    @all_categories = get_all_categories 
    checked_categories = get_categories_from(params[:categories]) 
    removed_categories = @all_categories - checked_categories 
    @product = Product.new(params[:product]) 
    if @product.save 
    checked_categories.each {|cat| @product.categories << cat if [email protected]?(cat)} 
    removed_categories.each {|cat| @product.categories.delete(cat) if @product.categories.include?(cat)} 
    redirect_to(:action => 'list') 
    else 
    render "new" 
    end 
end 

이 내가이 이미 아무것도에 좋은 이일 지출 한에게 Heroku의 설정

DATABASE_URL  => ..... 
GEM_PATH   => vendor/bundle/ruby/1.9.1 
LANG    => en_US.UTF-8 
PATH    => bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin 
RACK_ENV   => production 
RAILS_ENV   => production 
S3_BUCKET   => bucket_name 
S3_KEY    => access_key 
S3_SECRET   => secret_access_key 
SHARED_DATABASE_URL => ..... 

을 선택한 경우 내가 볼 것입니다.

답변

1

내 암호. config.fog_public을 false (아마존 당)로 변경해야했고 내 끝에서 안개 보석과 관련된 문제가있었습니다. 정보를 전송하지 않는 것 같습니다. 내가 수동으로 두 줄을 통해 정보를 추가했다 :

compute = Fog::Compute.new(:provider => 'AWS', :aws_access_key_id => ACCESS_KEY_ID, :aws_secret_access_key => SECRET_ACCESS_KEY)

및 그 후

storage = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => ACCESS_KEY_ID, :aws_secret_access_key => SECRET_ACCESS_KEY)

을 다했다. 또한 레일스는 명시 적으로 지정하지 않으면 캡 문자로 시작하는 문자열을 문자열로 인식하지 않으므로 문자열 형식으로 지정해야합니다.

+2

나는 carrierwave, aws 및 heroku 배포와 비슷한 문제가 있습니다. 로컬에서 작업을 찾을 수 있지만 배포시에는 업로드 할 수 없습니다. 'config/initializers/carrierwave.rb' 파일이 어떻게 보이는지 정확하게 편집하고 추가하십시오. 그건 내 애플 리케이션을 그냥 갈 수 있습니다. – BenU

1

if Rails.env.production?을 꺼냅니다. 문제 몇 가지 문제가 있었다 당신이 바로 그 일을하는 경우

, 당신은 environment variables to store your credentials을 사용해야합니다, 당신은 또한 기능면에서 matching your dev, test and productions environments을해야한다 (버킷 이름도 아마 있어야 할 구성 VAR)

+0

나는 그것을 시도했지만 여전히 작동하지 않습니다. 같은 오류가 발생합니다. 내 config.ru 파일에''Rack :: Static, : urls => [ '/ uploads'], : root => 'tmp''를 추가하고 uploader 파일에 cache_dir을 정의 했으니 아무 것도 작동하지 않습니다. 나는 여전히 같은 오류를 얻을 때마다 – noob

관련 문제