2013-04-29 13 views
8

önüne vadesi geldiğinde bildirim dosyasını eksik başarısız ve ben bu yanılgıya yayınlanmaya devam:Capistrano dağıtma kullanarak varlıklar Ben sadece bir Capistrano uygulamamız için dağıtmak kurdum

* executing ["ls /path/to/app/shared/assets/manifest*"] 
    servers: ["web03"] 
    [web03] executing command 
[err :: web03] ls: /path/to/app/shared/assets/manifest* 
[err :: web03] : No such file or directory 

el ile bir bildirim dosyası oluşturursanız touch /path/to/app/shared/assets/manifest.yml, dağıtım betiği iyi çalışıyor. Ancak, bu her türlü kabataslak hisseder.

Bunun için elimden geleni yaptım ve toplayabildiğim en açık adres, varlık manifoldunun varlık boru hattının bir ürünü olduğudur. Kontrol ettim ve aslında boru hattını etkinleştirdim (config.assets.enabled = true), bu yüzden bir kayıp yapıyorum.

Birisi lütfen bana yardımcı olabilir 1) bu açık dosyanın ne olduğu ve nasıl oluşturulduğunu; ve 2) başvurum için neden bir tane oluşturulmuyor?

Güncelleme: Ben cevap üzerinde kapanış düşünüyorum ve bunu bu hat ile ilgili bir şey olduğunu düşünüyorum:

config.assets.prefix = "/some_other_path" 

Biz Varlık var çünkü "varlık" yolunu yeniden adlandırmak için gerekli Sistemimizdeki nesneler ve sanırım Cap bunun yüzünden kafasını karıştırıyor olabilir. Baska öneri?

cevap

15

Şüphelerim haklıydı: Bu, yeniden adlandırılan varlık dizini ile ilgili bir sorun oldu. Cap, public/assets yerine public/some_other_path'a bakmayı bilmiyordu. Başka bir deyişle

, bu hat olduğu için benim application.rb:

Ben deploy.rb benim için bu satırı eklemek zorunda
config.assets.prefix = "some_other_path" 

: Sonra

set :assets_prefix, "some_other_path" 

, Cap bilen bir bildirim aramaya shared/assets içine kopyalar ve düzgün bir şekilde bitirir.

deploy.rb referansını, yolu ikinci kez sabit kodlamak yerine config değişkenine sahip olmak kullanışlı olur, ancak bu sorunun kapsamı dışındadır.

0

Eğer çenesinde ile konfigüre eğer burada olması gerektiği ...

appname/config/environments/production.rb

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

appname/config/deploy.rb

... 
set :keep_releases, 5 
set :assets_prefix, ->{ "#{fetch(:application)}/assets" } 

set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" } 
... 
İlgili konular