2011-08-30 11 views
5

Sono in procinto di aggiornare un'app. Attualmente 3.1.rc8.rails 3.1 - forza le risorse di sviluppo per essere servite come se fossero 3.0.x?

Il problema è che, in fase di sviluppo, a ogni richiesta, sembra che ogni singolo asset venga eseguito attraverso lo stack di rails. Stiamo parlando, ogni immagine, file js e css (e ce ne sono molti). Dopo la prima richiesta, tutti restituiscono 304, ma è ancora così lento.

C'è un sacco di questo dopo ogni richiesta:

Started GET "/assets/jquery-ui-1.8.16.custom.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400 
Served asset /jquery-ui-1.8.16.custom.css - 304 Not Modified (0ms) 

Started GET "/assets/yui.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400 
Served asset /yui.css - 304 Not Modified (0ms) 

Come posso rendere le attività, in fase di sviluppo solo, vengono serviti come si usava in 3.0.x?

Sono anche utilizzando questi tag per evitare che i miei css/js di essere compilato in un unico file in dev:

= stylesheet_link_tag 'application', :debug => Rails.env.development? 
= javascript_include_tag 'application', :debug => Rails.env.development? 

Ecco il mio application.rb

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

if defined?(Bundler) 
    Bundler.require(:default, :assets, Rails.env) 
end 

module Fooapp 
    class Application < Rails::Application 
    config.encoding = "utf-8" 

    config.filter_parameters += [:password, :password_confirmation] 

    config.assets.enabled = true 

    config.assets.version = '1.0' 
    end 
end 

e development.rb:

Fooapp::Application.configure do 

    config.cache_classes = false 

    config.whiny_nils = true 

    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    config.action_mailer.raise_delivery_errors = true 

    config.active_support.deprecation = :log 

    config.action_dispatch.best_standards_support = :builtin 

    config.assets.compress = false 

    config.assets.debug = true 
end 

risposta

0

La lentezza che ho visto è principalmente legata alla sfinge pensante (che è nel mio Gemfile). In fase di sviluppo, TS carica alcune cose correlate a I18n su ogni richiesta di pagina .. e ogni risorsa viene considerata una richiesta di pagina.

https://github.com/freelancing-god/thinking-sphinx/blob/v2.0.7/lib/thinking_sphinx/railtie.rb#L29

In ogni modo, il manutentore di TS è consapevole, ADN quel file non esiste più sul master. Fino a quando non viene creata una nuova versione, è possibile commentare le due linee I18n localmente.

1

Rails esegue tutti i hook to_prepare su ogni richiesta di asset Sprockets e c'è un buon numero di gemme che eseguono una grande quantità di lavoro nei loro hook. (Anche il suo sé è un trasgressore indiretto, dal momento che sta ricaricando parte del codice su ogni richiesta di asset)

Invece di aspettare che ottimizzino i loro hook di precaricamento (in generale, o solo per richieste di risorse), dai un'occhiata a https://github.com/wavii/rails-dev-tweaks. Disabilita i hook di precarico (incluso il ricaricamento del codice) durante le richieste di asset.

E 'anche configurabile per qualsiasi altro tipo di richiesta si vuole

+0

Applausi per quella gemma. Aiuta molto – Andy

Problemi correlati