2012-04-11 14 views
29

Uygulamam geliştirme modunda gayet iyi çalışıyor.raylar 3.1.3: üretimde yerel olarak çalıştırılmaya çalışılıyor, varlık borusu çalışmıyor

RAILS_ENV=production rails s kullanarak üretim modunda çalışırken .css veya .js dosyalarının hiçbiri yüklenmiyor. (Ben RAILS_ENV=production bundle exec rake assets:precompile kullanarak, ön derleme varlıkları yaptı.)

WEBrick günlüğü gösterir:

ActionController :: RoutingError (No rota maçları "/assets/application-a73ce43be7bf75953cd0c60b2b4a7eb0.js" [GET]):

ve

ActionController :: RoutingError (No rota maçları "/assets/application-986dd79830088c416c1632c12999ec69.css" [GET]): (log \ production.log dosyasına göre)

dosyalar derlenmiştir ve benim kamu/varlıklar dizini ile ve parmak izi olmadan bu dosyaları gösterir:

ls public/assets 
application-986dd79830088c416c1632c12999ec69.css 
application-986dd79830088c416c1632c12999ec69.css.gz 
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js 
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js.gz 
application.css 
application.css.gz 
application.js 
application.js.gz 

cevap

47

Raylar varsayılan olarak üretim modunda statik varlıkları hizmet etmez. Bunu devre dışı bırakmak ve statik varlıkları sunmak istiyorsanız, bu ile config/environments/production.rb dosyasını güncellemek:

config.serve_static_assets = true 

Rails'in varsayılan yapılandırmada arkasındaki mantık Eğer üretim modunda standart bir web sunucusuna arkasında çalışan olacağım varsayar olmasıdır (Apache, Nginx, vb.) Daha sonra Rails uygulamanıza isteklerinizi iletecektir. Varlıklar önceden derlendiği için, Apache/Nginx/etc. Rails süreçlerinizle konuşmanıza gerek kalmadan onlara doğrudan hizmet verebilir. Şimdi mantıklı olan

+0

- mükemmel açıklama için teşekkürler. – jpwynn

+0

@Dylan Sadece aynı soruna rastladım - harika bir açıklama için teşekkürler! – weltschmerz

İlgili konular