2011-10-01 24 views
14

ile geliştirme modunda önbelleğe alınmış durumda. Son zamanlarda başvurumu ray 3.1'e yükselttim ve genellikle her şey çalışıyor gibi görünüyor, ancak bir şey beni deli ediyor.Javascript varlık geliştirme hattı

2 ana js dosyam var, bunları diyoruz, application.js ve main.js.

application.js, benim en açık materyaller içeriyor ve main.js.'de yükleniyor Bu iyi çalışıyor. Sorunum, geliştirme modunda olduğumda ve main.js'de bir değişiklik yaptığımda, sitenin değişikliği almadığı sayfanın yenilenmesiydi. Değişikliği çekmek için rayları sunucuyu yeniden başlattım.

Geliştirme sırasında hata ayıklama modunu açtım, ancak eksik olduğum başka bir ayar olup olmadığını merak ediyorum.

Daha önce buna giren var mı?

+1

Burada aynı soruna sahip bir çözüm bulmayı umuyorum. Önbelleğe alınmış bir JS dosyası (veya bu konu için CSS) sunulmasını engellemek için herhangi bir yol bulamıyorum. Tek yapmanız gereken tek şey küçük bir şeyi değiştirmek, o zaman WEBrick tekrar tekrar başlıyor ... –

cevap

14

Aynı sorunu yaşadım, ancak config.action_controller.perform_caching zaten false olarak ayarlanmıştı.

Çalıştığım başka bir kişi için sorun, Chrome'un Rails ayarlarına rağmen sayfayı önbelleğe almasıydı.

Düzeltmek için, sekmeyi kapattık, yeni bir sekme açtık ve siteyi tekrar ziyaret ettik.

+0

Bu sona erdi - aslında krom şey. Neden hala bir ipucum yok ama tarayıcı önbelleğini elle temizlemem gerekiyordu ve sonra değişiklikleri aldım. – JoshReedSchramm

+1

Bu sadece bana oldu, tarayıcıyı yeniden başlatmak bu problemi düzeltmek için görünüyordu ... sanki perform_caching false olarak ayarlanmış olmasına rağmen sadece önbelleğe servis yapmaya karar vermiş gibiydi. Garip. – StuR

+1

Sadece son 3 saat bu sorunu çözmeye çalışırken harcadı. Bilgisayarımı bile yeniden başlattım, ancak OSX artık açık tarayıcı pencerelerinizi kaydettiğinden, bunu yapmadı. Sekmeyi kapattı, açtı ve problemi çözdü. Sanırım şimdi kendime ateş edeceğim. –

1

Geliştirme günlüğünüze bir göz atın ve application.js hizmeti sunulduğunda ne yazdığını görün.

Bu normal isteği (bir sayfaya göz) için böyle bir şey görünmelidir:

 
Started GET "/assets/application.js" for 127.0.0.1 at Fri Sep 30 12:13:27 +1300 2011 
Served asset /application.css - 304 Not Modified (2ms) 

değil doğru boru hattı seçeneklerini ayarlamak etmemiş olabilir. Üretim ayarlarından biri yanlış yerde olabilir. Varlık boru hattı kılavuzunun Section 9, taşınan bir uygulama için doğru ayarların bir kontrol listesini içerir.

+1

yah i Başlarken GET "/assets/main.js?body=1" 127.0.0.1, 2011-10-01 16:22:16 -0400 Sunulan değer /main.js - 304 Değiştirilmedi (0ms) – JoshReedSchramm

+0

bah Yorumlarda satır sonu yok. önbellekten sunum yapıyormuş gibi görünüyor, tekrar rehbere göz gezdiriyor – JoshReedSchramm

+0

Tarayıcıda hangi başlıkları görüyorsunuz? –

2

Aynı problem vardı ve nihayet development.rb'mdeki bir şeye rastladım. config.action_controller.perform_caching true değerine ayarlanmış ve yanlış olarak değiştirerek sorunu çözdüm.

2

Chrome'u gizli modda açmak benim için en iyi sonucu verdi. Bir sekmeyi açıp kapatmaya gerek yok. Gizli modda, krom javascript'i önbelleğe almaz.

1

Aynı sorun vardı, config.action_controller.perform_caching düzgün ayarlanmış. Ben de kullanarak Heroku ve Push to Heroku için varlıkların precompile varlıklarını kullanıyorum: RAILS_ENV = üretim paketi exec komisyonu varlıkları: precompile Yeni çalışmaya başladığımda, itme sonrasında, aşağıdakileri kullanarak önceden derlenmiş öğeleri kaldırmayı unuttum: sudo rm -r public/assets/*

Benim .js dosyalarından herhangi birine ne yaptığım önemli değil, değişiklikler değişmiyordu.

2

Ayrıca, config.threadsafe'i etkinleştirirseniz, cache_classes'ı etkinleştirir. senin yapılandırma/ortamlar/development.rb dosyası içeriyorsa Yani şu:

config.cache_classes = false 
config.threadsafe! 

O zaman doğru yeniden açmadan sonra cache_classes kapatarak ve edilmektedir. Yapılandırmayı yorumlamanız gerekir.Böyle threadsafe (İhtiyacınız yoksa):

config.cache_classes = false 
# config.threadsafe! 

Veya, threadsafe gerekirse config_classes gerçekten kapatılırsa, böylece her iki oluşumun sırasını tersine:

config.threadsafe! 
config.cache_classes = false 

için Daha fazla bilgi için, bkz. http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html

4

Aynı sorunu yaşadım ve geliştirmedeki varlık özetlerini kaldırmanın sorunu çözdüğünü öğrendim.

önbelleğe alma raylar .. bazı zamanlar biraz değişiklik algılamaz yapılır emin olun yukarıdaki yanıtlar bağlamında başarısız sözü olursa

config.assets.digest = false 
0

..: Eğer developmen.rb false olarak ayarlayın emin olun önbelleğe alınmış eski sürümü varlık ve hizmet ..

kullanım rails c >> Rails.cache.clear
veya basitçe dir tmp

içinde önbelleklerini sil

[project_dir/tmp/cache/assets"]