2014-04-11 7 views
1

carrierwave를 사용하여 이미지를 S3에 업로드하려고합니다. 그것은 로컬로 작동하지만 나는 다음과 같은 오류가 Heroku가에 배포 갈 때 :Heroku S3 Env 변수

나는 그들을 볼 수 있기 때문에 내가 Heroku가 실행할 때 키가 확실히 설정
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_ 
    access_key 

: 나는 모든 대답을 검색 한

설정을 나는 스택에서 찾을 수 있었고 Google의 처음 3 페이지에서 모든 대답을 검색했습니다. 그들 중 누구도 일한 적이 없다.

나는 업로드 작업을 알고 있으므로 문제가되지 않습니다. 이 설정을하려면 어떤 설정이나 변수를 설정해야합니까? 이 작업이 완료 될 때까지

내 응용 프로그램과 함께 앞으로 이동할 수 없습니다, 도와주세요 (그래서 나는 그것이이 오류로 인해 중단되지 않고 다시 Heroku가에 배포 할 수 있습니다.)

답변

2

일부 정보 등 :

(210 개)

환경 변수

You've got a problem with the calling of your environment variables in Heroku. ENV vars are basically variables stored in the OS/ environment, which means you've got to set them for each environment you attempt to your deploy application

heroku config은 ENV 당신이 설정 한 바르해야한다. 당신이 등 ENV['AWS_ACCESS_KEY']이 표시되지 않는 경우, 그것은 당신이 설명 된 바와 같이이 heroku config:add YOUR_ENV_VAR=VAR


피가로

내가 Figaro을 사용하는 것이 좋습니다 싶어 명령을 호출하는 것처럼 간단하다, 올바르게 설정되지 않은 한 의미 이것을 위해

이것은 기본적으로 로컬 ENV vars를 config/application.yml에 저장하는 보석입니다. 이렇게하면 ENV 변수를 로컬에 저장할 수 있습니다. 하지만 더 중요한 것은, allows you to sync them with Heroku이 명령을 사용하여

rake figaro:heroku 

이 다른 답변에서 권장하는대로 Carrierwave 함께 사용 할 수 있도록, Heroku가에 당신의 env 바르를 설정합니다

1

소리가 난다는 ENV 설정처럼 헤로쿠의 변수는 CarrierWave에 연결해야합니다. 당신의 environments/<environment>.rb 파일에서

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    :aws_access_key_id  => Rails.configuration.s3_access_key_id, 
    :aws_secret_access_key => Rails.configuration.s3_secret_access_key, 
    } 
end 

config/initializers/fog.rb에서

Rails.application.configure do 
    config.s3_access_key_id  = ENV['S3_ACCESS_KEY_ID'] 
    config.s3_secret_access_key = ENV['S3_SECRET_ACCESS_KEY'] 
end 

이것은 그들이 사용할 수있게에게 Heroku에 ENV 변수로 레일 구성을 설정 Rails.configuration.<key>