2012-11-09 23 views
6

Öğelerimi önceden derlemek için gem asset_sync ve aws öğesini kullandım. komisyon varlıkları: precompile çalışır. Benim Heroku uygulamayı veBaşlatılmamış sabit AssetSync

aşağıdaki hatayı alıyorum
heroku run rake db:migrate 

aktardıktan sonra

"başlatılmamış sabit AssetSync"

ilklendiriciler/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 

config/production.rb

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

Çalıştırılmış rake öğelerini çalıştırdıktan sonra: ilk kez ön derlemeyi, tüm uygulamalarım/varlıkları/resimleri herkese açık/varlıklara taşındı. Onları github'dan sildim ve public/assets/* öğesini .gitignore'a ekledim. Sorun bu olabilir mi?

Düzenleme: git push Heroku ustası çalışırken onlar

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) 

cevap

13

Kişisel başlatıcı AssetSync hep tanımlandığını varsayar precompiled varmış gibi, görünüşe ancak Gemfile gibi görünüyorsa bu durum olmayacaktır:

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

asset_sync belgelerinde başlatıcı sarma tavsiye

Bunun nedeni Heroku'nun 'u assets taşlar grubu olmadan çalıştırmasıdır. Bir itme çalıştırdığınızda Heroku öğelerinizi hazırlar - ve eğer asset_sync etkinse, o zaman S3'ü günceller - böylece uygulamanız daha sonra başladığında, artık bu mücevherlere ihtiyaç duymaz. Böylece, asset_sync başlatıcınızın, gemin yüklü olmadığı durumu ele alması gerekiyor.

İlgili konular