2012-11-09 3 views
6

資産asset_syncとawsを使用して資産をプリコンパイルしました。レーキ資産:プリコンパイルは正常に動作します。初期化されていない定数AssetSync

"初期化されていない定数AssetSync"

初期化子/ asset_sync.rb

AssetSync.configure do |config| 
    config.fog_provider = 'AWS' 
    config.aws_access_key_id = "..." 
    config.aws_secret_access_key = "..." 
    config.fog_directory = Rails.env + "-..." 
    config.fog_region = 'eu-west-1' 
end 

を私はHerokuのに私のアプリをプッシュし、

heroku run rake db:migrate 

は、私は次のエラーを取得した後config/production.rb

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" 
config.assets.enabled = true 

run rakeアセットを実行した後、最初にプリコンパイルすると、すべての自分のアプリケーション/アセット/イメージがpublic/assetsに移動されました。私はgithubから削除し、public/assets/*を.gitignoreに追加しました。これが問題になるかもしれませんか?

編集:GitのプッシュHerokuのマスターを実行しているとき、彼らは

Preparing app for Rails asset pipeline 
    Running: rake assets:precompile 
    AssetSync: using /tmp/build_2ltvklj0gaxjp/config/initializers/asset_sync.rb 
    AssetSync: using /tmp/build_2ltvklj0gaxjp/config/initializers/asset_sync.rb 
    AssetSync: Syncing. 
    Using: Directory Search of /tmp/build_2ltvklj0gaxjp/public/assets 
    Uploading: assets/application-7e17d9f0ed9cb7ea50b750e2bfc7e28c.css.gz 
    Uploading: assets/application-7e17d9f0ed9cb7ea50b750e2bfc7e28c.css 
    AssetSync: Done. 
    Asset precompilation completed (58.04s) 

答えて

13

あなたの初期化子がAssetSyncは常に定義されていることを前提としてプリコンパイルされたように、それは見えますが、あなたのGemfileがどのように見える場合、これがケースではありません。

if defined?(AssetSync) 
... 
end 
group :assets do 
    gem 'asset_sync' 
end 

asset_syncドキュメントがで初期化子を包むお勧めします

これは、Herokuがassetsの宝石群なしでproductionを実行しているためです。 Herokuはプッシュを実行するときに資産をプリコンパイルします。asset_syncが有効な場合、その時点でS3が更新されるため、アプリケーションが後で起動されたときにそれらの宝石は必要ありません。したがって、あなたのasset_syncイニシャライザは、gemがロードされていない状況を処理する必要があります。

関連する問題