2016-09-23 13 views
1

私はS3をインストールしました。それは英雄でうまくいきます。 RAILS_ENV=production bundle exec rake assets:precompileを実行してアセットをherokuにプッシュしようとすると、上記のエラーが返されます。 heroku configを実行すると、すでにS3バケットが設定されています。KeyError:キーが見つかりません: "S3_BUCKET_NAME"

これは何を探しているのですか、なぜ資産をコンパイルするのにS3の名前を見つけることができないのですか。 production.rb

config.paperclip_defaults = { 
    storage: :s3, 
    s3_credentials: { 
     bucket: ENV.fetch('S3_BUCKET_NAME'), 
     access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
     secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
     s3_region: 'us-west-2', 
    } 
} 

私はこの上でいくつSO見つけたが、どれも解決に向けて私を指していません。どんな助けもありがとう!

更新日: 私がローカルでコンパイルする理由は、herokuがapplication.jsファイルを取り出しているためです。

remote:  Running: rake assets:precompile 
remote:  I, [2016-09-23T15:12:53.753671 #267] INFO -- : Writing /tmp/build_97a8fe2ca07bc4bf090be26f2be2872b/public/assets/application-9c608f99ae2b1980d74ba674b9f9ff7f0ae113d532e2c2ea580960a6a53346bb.js 
remote:  Asset precompilation completed (6.54s) 
remote:  Cleaning assets 
remote:  Running: rake assets:clean 
remote:  I, [2016-09-23T15:12:55.908630 #273] INFO -- : Removed application-489c5647af1ca8b6a56e560e8a83d77a1a070778dabb4f0b40f55c4a4e5b8feb.js 

答えて

1

あなたはHerokuの上S3_BUCKET_NAME設定プロパティは効果がありません場合は、ローカルに資産をコンパイルしようとしています。

アプリケーションをローカルで実行する場合(これにはRakeタスクの実行が含まれます)、その環境変数を定義する必要があります。言っ

は、この文は意味がありません:あなたはHerokuのに「資産をプッシュ」するために、ローカルrake assets:precompileを実行する必要があるに

When I try to run RAILS_ENV=production bundle exec rake assets:precompile to push assets to heroku,

は理由はありません。 Herokuは、新しいコミットをプッシュするたびに、資産を自動的にコンパイルします。

+0

これは実際問題です。私は英雄にプッシュすると、application.jsを取り出します。だから私はそれをherokuにプッシュされるようにローカルでコンパイルしようとしています。ログエラーのエラーを更新します。あなたの知識のために、私はS3をインストールする前にローカルでコンパイルしていました。 – gwalshington

+0

@ gwalshingtonあなたはあなたの問題を誤診しました。アセットをローカルでコンパイルしてHerokuにプッシュするのは間違った答えです。 Herokuはあなたのapplication.jsを削除していません。あなたのapplication.jsの古いバージョン*を削除しています – meagar

+0

実際、application.jsはプロジェクトには全くありません。それがなぜそこにないのかについての考えはありますか?そして、それがそこにないことを確認するために、私はconsole.logに、ページが読み込まれたときに何かを要求しています。 – gwalshington

関連する問題