2014-06-05 15 views
5

'Rails 4 ile Agile Web Development' rehberini takip ediyorum ve önbellekleme bölümüne girdim. config/ortamlarda/development.rb içindeÖnbellek çalışıyorsa nasıl söylenir. Raylar 4

  1. app/modelleri/product.rb olarak

    config.action_controller.perform_caching = true 
    
  2. görünümlerinde

    def self.latest 
        Product.order(:updated_at).last 
    end 
    
  3. /mağaza: Burada adımlar şunlardır /index.html.erb

    <% cache ['store', Product.latest] do %> 
        <% @products.each do |product| %> 
         <% cache ['entry', product] do %> 
          <div class="entry"> 
           <%= image_tag(product.image_url) %> 
           <h3><%= product.title %></h3> 
           <%= sanitize(product.description) %> 
           <div class="price_line"> 
            <span class="price"><%= number_to_currency(product.price) %></span> 
           </div> 
          </div> 
         <% end %> 
        <% end %> 
    <% end %> 
    

Paranın çalıştığını doğrulamak için kitap şöyle diyor: "Bunun çalıştığını doğrulamak için maalesef görecek çok şey yok. Bu sayfaya giderseniz, hiçbir şey değişmemelisiniz, aslında bu nokta! Yapabileceğiniz en iyi şey, herhangi bir ürünü güncellemeden önbellek bloğunun herhangi bir yerinde herhangi bir değişiklik yapmak ve sayfanın önbelleğe alınmış sürümü güncellenmediğinden bu güncellemeyi görmediğinizi doğrulamaktır. "

Ancak, önbellek blokları içinde kodda bir "Merhaba" dizesi eklediğimde ve sayfa eklediğimde, tüm sunucu yeniden başlatmayı ve ne yapamadığımı yaptım.

Ancak, sayfamı yeniden yerel sayfama yüklediğimde onların ben config.action_controller.pe değil bu satırı

Cache digest for app/views/store/index.html.erb: 6c620ede1d4e824439a7b0e3b177620f 

görüyorum barındırmak git göbek repo rform_caching = false

Bağlantı: yerine önbelleği manipüle etmenin ne kadar kolay, dosyayı değiştirirken

https://github.com/BrianLobdell/depot Teşekkür ederim, Brian

+0

nasıl? her şey işe yarıyor gibi görünüyor ... – joni

+1

Kitabın test yolu bir ürün ("merhaba" dizesi gibi) değiştirmedi önbellek bloğuna bir şey eklemek için söyledi ve önbellek çalışıyordu eğer o görünmüyordu sayfa. Ancak, benim durumumda, "Merhaba" dize ortaya çıktı – megacanyon

cevap

2

Raylar önbelleği günceller.

Önbellek sizin Raylar konsolundaki sayfa için sindirmek kullanarak önbellek parçasını alabilir (özeti değişmiş olabilir, son birini kullandığınızdan emin olun!):

key = ['store', Product.latest, '6c620ede1d4e824439a7b0e3b177620f'] 
ActionController::Base.new.read_fragment(key) 

Bu önbelleğe dönmelidir fragmanı. Yakut aslında sayfasını servisi yaparken, bazı başka içerikle fragman yerini alabilecek önbellek vurur emin olmak için: "! Çalıştığını"

ActionController::Base.new.write_fragment(key, 'it works!') 

sayfayı yeniden yükleyin, sen görmelisiniz.

+0

Maalesef bu yüzden bu kodun nereye gideceği ve tam olarak ne yapması gerektiği konusunda biraz kafam karıştı. – megacanyon

+0

Ayrıca, kitaptaki örnekte verilen kodun kitabın anlatıldığı şekilde test edilemediği konusunda da kafam karıştı. – megacanyon

+1

Kodu [Rails konsolu] 'ndan (http://guides.rubyonrails.org/command_line.html#rails-console) çalıştırın: başlatmak için terminalinizde 'raylar konsolu' yazın. – Stefan