2012-03-05 6 views
1

私はレール3.2.1、搬送波0.5.8、フォグ1.1.2、rmagick 2.13.1を使用しています。carrierwave heroku - エラーが発生し続けるmsg

私は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に変更する必要があり(Amazonごとに)、私の最後から霧の宝石に問題がありました。どうやらそれは情報を転送していなかったようだ。私は手動でこれらの2本のラインを介して情報を追加する必要がありました。その後

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

私もそれを試みましたが、それはまだ動作していません。私は同じエラーが発生します。私は 'use Rack :: Static、:urls => ['/ uploads']、:root => 'tmp''を自分のconfig.ruファイルに追加し、uploaderファイルにcache_dirを定義して何も動作しません。私はまだ毎回同じエラーが発生します – noob

関連する問題