Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [Rails] caching in fase di sviluppo?

    Ciao a tutti,

    ho un piccolo problema: richiamando un file esterno in application.rb (ApplicationController) che contiene la riapertura della classe "String" per aggiungere dei metodi personalizzati, ho notato che quando guardo in una "View" l'efetto del metodo creato questi funziona correttamente, se poi però apporto a tale metodo dei cambiamenti la View rimane la stessa es:

    codice:
    class String
    
      def normalize
        self.gsub(/[^a-z0-9]+/i, '-')  
      end
    
    end
    
    <%= "PIPPO PAPERINO".normalize %> => "PIPPO-PAPERINO"
    Dopodichè se modifico:

    codice:
    class String
    
      def normalize
        self.gsub(/[^a-z0-9]+/i, '-').downcase  
      end
    
    end
    Ottengo sempre:
    codice:
    <%= "PIPPO PAPERINO".normalize %> => "PIPPO-PAPERINO"
    Invece che:
    codice:
    <%= "PIPPO PAPERINO".normalize %> => "pippo-paperino"
    Tant'è che se provo a cambiare nome al metodo nella classe e poi a cambiarlo anche laddove richiamato mi viene generato un errore di metodo inesistente, presumo, per via di questo motivo di caching.

    Eppure in "Development" il canching non dovrebbe essere tutto disabilitato?

    In config/environments/development.rb

    codice:
    config.action_controller.perform_caching = false
    Grazie.

  2. #2
    Ci sono alcuni file che vengono ricaricati solo al riavvio del server.
    Tutti i file in lib, vendor, gli environment e gli initializer.

    Se sei in una di queste casistiche, allora devi riavviare il server ad ogni modifica o progettare l'applicazione (o la fase di testing) in modo che corrisponda meglio alle tue esigenze.

  3. #3
    A dire il vero ho messo il file in una cartella alla stessa altezza di Model/Controller/View quindi sotto "App".

    Non capisco come mai avvenga ciò, così risulta purtroppo molto difficoltoso lavorarci.

  4. #4

  5. #5
    require 'cartella/file' dove "file" è il nome del file senza l'estensione ".rb"

  6. #6
    Pur non essendo un guru di Rails credo proprio che sia cache perchè questo comportamento avviene solo dopo il primo caricamento del file.

    Se infatti provo a richiamare lo stesso codice in un file incluso ex-novo, vedo effetti sulle modifiche apportate per poi trovarmi di nuovo con lo stesso problema dopo un salvataggio e refresh di pagina.

    Aiuto.

  7. #7
    Nessun altro suggerimento?

  8. #8
    Normalmente io avrei seguito un'altra strada per includere funzionalità aggiuntive in una classe a seconda se sto estendendo core o scrivendo estensioni per la main app.
    Non so se il caching sia legato alla posizione o al tipo di classe che stai estendendo, dovrei fare dei test. So per certo che certe location sono messe in cache, non mi stupirebbe se anche certe classi parte della stdlib.

    Comunque, se lavoro su core, questo non mi preoccupa.
    Il testing lo faccio via unit test, dunque non mi tocca il problema relativo al webserver. Il testing via web server non è comunque la scelta ottimale.
    Infatti, normalmente le estensioni che scrivo per core le infilo direttamnte in initializers per essere sicuro che volutamente siano messe in cache e caricate solo in fase di boot.

  9. #9
    Uhm io, nella mia fase di studio Di RoR, non sono ancora giusto all'utilizzo delle Unit Test quindi non saprei.

    Per ora mi stavo limitando al classico processo: sviluppa-> guarda risultato -> modifica -> guarda risultato -> ecc., con refresh della pagina da browser.

    A riguardo: questo è un modus operandi accettabile in RoR? Oppure, visto che è la prima volta che mi affaccio ad un Framework MVC, esiste forse un percorso di sviluppo -> testing migliore e "più ufficiale" a cui aderire?

    In ogni caso, durante la fase di sviluppo, dove mi consigli di inserire eventuali moduli, classi ecc. di supporto per la "main app" che, come per Model, Controller e View NON devo (giustamente) subire caching?

    Tnx.

  10. #10
    Originariamente inviato da CozzaAmara
    Uhm io, nella mia fase di studio Di RoR, non sono ancora giusto all'utilizzo delle Unit Test quindi non saprei.
    Questa fase dovrebbe essere preliminare a Rails. E' una modalità di sviluppo, particolarmente enfatizzata per chi sviluppa in Ruby.
    Poiché Ruby < Rails dovresti documentarti senz'altro prima di parrare a Rails.

    Rails poi estende il concetto di test introducendo unit e functional test.

    Ignorare i test sviluppando con Ruby e Rails è come andare al supermercato a fare la spesa non volendo prendere il carrello.

    In ogni caso, durante la fase di sviluppo, dove mi consigli di inserire eventuali moduli, classi ecc. di supporto per la "main app" che, come per Model, Controller e View NON devo (giustamente) subire caching?
    Questa domanda ha una risposta ovvia che probabilmente non ti aiuta per nulla: vanno inseriti nel posto più adeguato.
    Chiarisco il concetto: ogni elemento ha il suo posto. A seconda di cosa lo estende, di come e di qual'è il suo scopo avrà una posizione diversa.

    Come detto, una core extension può stare in initializers (fisicamente o via richiamo, magari salvando il contenuto in lib) o eventualmente (se ha senso) in un plugin.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.