9

現在、Railsアプリでasset_syncを使用しており、Herokuアプリで環境変数を設定しています。heroku configを実行すると、次のようになります。

AWS_ACCESS_KEY_ID:     XXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXX
FOG_DIRECTORY:         MY-BUCKET-NAME
FOG_PROVIDER:          AWS
etc...

アプリをHerokuにプッシュすると、rake Assets:precompileを実行しようとし、次のメッセージが表示されます。

Preparing app for Rails asset pipeline
Running: rake assets:precompile
/usr/local/bin/ruby /tmp/build_2pa7aisux9av8/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
AssetSync: using /tmp/build_2pa7aisux9av8/config/initializers/asset_sync.rb
rake aborted!
Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank

しかし、私は実行します:

heroku run rake assets:precompile --app my-app-name

...そしてそれはすべてを処理し、S3にうまく同期します:

Running `rake assets:precompile` attached to terminal... up, run.1
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=staging RAILS_GROUPS=assets
AssetSync: using /app/config/initializers/asset_sync.rb
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=staging RAILS_GROUPS=assets
AssetSync: using /app/config/initializers/asset_sync.rb
AssetSync: Syncing.
Using: Directory Search of /app/public/assets
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css.gz
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css.gz
Uploading: assets/application-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.css
AssetSync: Done.

プッシュ中に機能しない理由はありますが、Herokuがrake Assets:precompileを実行すると正常に機能しますか?

4

2 に答える 2

19

実行する必要があることを示すasset_syncgithubページのドキュメントが見つかるまで、サーバーの1つで同じ問題が発生しました

heroku labs:enable user-env-compile --app <appname>

それが機能するために。

HerokuにはAssetSyncドキュメントもあります

今一度だけアセットをコンパイルするのはとてもいいことです

于 2012-08-28T14:50:11.457 に答える
3

私はあなたがassets:precompilerakeタスクを--app my-app-nameオプションで実行しているのを見ることができます。念のために言っておきますが、複数のアプリがありますHerokuか?(例:ステージングとプロダクション)。--app my-app-nameその場合は、heroku configを実行すると、configで得た出力が得られることを確認してくださいheroku

上記のコマンドで期待どおりの結果が得られた場合は、asset_sync_test github readmeENVで提案されているように、変数がgitpushで使用できない可能性があります。ファイルで以下を使用することにより、これを回避できます。config/environments/*.rb

config.asset_sync.aws_access_key = ENV['AWS_ACCESS_KEY_ID']
config.asset_sync.aws_access_secret = ENV['AWS_SECRET_ACCESS_KEY']
config.asset_sync.aws_bucket = ENV['FOG_DIRECTORY']
config.asset_sync.fog_provider = ENV['FOG_PROVIDER']
于 2012-06-08T06:01:33.150 に答える