2012-03-12 9 views
35

Per eseguire il debug di javascript nel mio ambiente di produzione heroku, è necessario disabilitare la compressione delle risorse (o almeno la compressione di javascript). Ho provato config.assets.compress = false insieme a config.assets.debug = true e le risorse compresse sono ancora utilizzate. Ho quindi eliminato le attività compresse, a quel punto nessun asset è stato reso affatto. Ho aggiunto config.assets.enabled = false, che non ha aiutato. Ho provato a copiare le risorse non compresse in varie directory, tra cui la radice dell'applicazione, pubblica e pubblica/risorse (le ultime due utilizzando entrambe le cartelle "immagini", "javascripts" e "stylesheets" e inserendo le risorse direttamente nelle cartelle senza le tre sottocartelle). Sono stato finalmente in grado di far funzionare i javascript modificando l'html per fare riferimento direttamente a tutti i file javascript, ma il CSS e le immagini non funzionano ancoraDisabilitare il minino delle risorse nella produzione di binari

Avrei pensato che il mio originale config.assets.compress = false Qualsiasi idea su cosa ho sbagliato?

+0

Lei è stato sicuramente modificando 'config/ambienti/production.rb'? –

+0

Stai utilizzando gli helper dei tag Rails per accedere alle risorse (javascript_include_tag 'script.js')? Potresti concentrarti su un singolo file e darci un esempio di come è implementato e cosa sta succedendo? – mltsy

risposta

47

sono arrivato fino a questa soluzione dopo aver letto the docs:

creare un modulo che non fa nulla per comprimere js/css qui: lib/modules/no_compression.rb

class NoCompression 
    def compress(string) 
    # do nothing 
    string 
    end 
end 

configurare le risorse per (non) essere compressi con il tuo compressore del nulla-fare

config.assets.compress = true 
config.assets.js_compressor = NoCompression.new 
config.assets.css_compressor = NoCompression.new 
+0

Molto intelligente! Non l'avrei mai pensato. Grazie! –

+0

Grande cosa da usare quando si distribuisce ai server di gestione temporanea. Mi fa risparmiare 100 secondi da un totale di 260 ogni volta che utilizzo su heroku. – hakunin

+0

Questo aggiungerà ancora l'hash ai nomi dei file degli asset?Sto eseguendo il debug del codice su un server, ma per trovare l'errore devo utilizzare i nomi degli asset con hash corretti. – Ziggy

0

Sembra che questo possa essere stato un bug in Rails. Dal changelog per le prossime binari 3.2.9, è questo quello che stavi incontrando?

Rispetto config.digest = false per asset_path

In precedenza, gli interni asset_path rispettato solo il: digerire opzione, ma ignorata l'impostazione di configurazione globale. Ciò significava che config.digest = false non poteva essere usato insieme a config.compile = false questo corregge il comportamento.

http://weblog.rubyonrails.org/2012/10/29/ann-rails-3-2-9-rc1-has-been-released/

Pensi che potrebbe essere correlato?

+0

Non penso che i due siano correlati, perché credo che il cambiamento abbia a che fare con l'aggiunta o meno di un digest al nome dell'asset, mentre il mio problema ha avuto più a che fare con la compressione javascript. È possibile che lo stesso problema esista con config.asset.compression e non lo abbiano ancora trovato, suppongo. In ogni caso, grazie per l'avviso su questo. –

6

Vale anche la pena notare ... Oltre alla soluzione di ncherro è necessario eseguire il di seguito:

  1. assicuratevi di mettere il vostro nuovo modulo da qualche parte dove verrà caricato di default. Era lib/extra nel mio caso.
  2. eseguire rake assets:clean per pulire le risorse esistenti.
  3. eseguire rake assets:precompile per compilare le risorse utilizzando il nuovo compressore.
  4. riavviare la vostra applicazione ... io uso touch tmp/restart.txt

Felice debug;)

11

Ho anche bisogno di eseguire il debug miei js così ho provato la soluzione di ncherro. Il problema era che avrebbe comunque lanciato

rastrello interrotto! inizializzata costante NoCompression

Così ho appena messo la classe NoCompression nel file production.rb

# Compress JavaScripts and CSS 
    class NoCompression 
     def compress(string) 
      # do nothing 
      string 
     end 
    end 

    config.assets.compress = true 
    config.assets.js_compressor = NoCompression.new 
    config.assets.css_compressor = NoCompression.new 
20

Under Rails 4 appena commentando la linea

# config.assets.js_compressor = :uglifier 

in config/environments/production.rb lavorato per me . Sembra che il valore predefinito non è il compresson.

6

Commentare l'ugolatore e aggiungere config.assets.debug = true. Questo ha funzionato per me.

  • JavaScript comprimere e CSS:

    config.assets.js_compressor = :uglifier

  • modalità debug disabilita la concatenazione e la pre-elaborazione dei beni. Ma questa opzione può causare notevoli ritardi nella visualizzazione di rendering con un gran numero di beni complessi:

    config.assets.debug = true

2

con guide 4 su Heroku è necessario fare due cose. In primo luogo, come accennato @geekQ, commentare la riga js_compressor in config/environments/production.rb

# config.assets.js_compressor = :uglifier 

In secondo luogo, è necessario considerare Heroku's asset pipeline cache for Rails 4. qualsiasi file con lo stesso MD5 non verrà ricompilato la versione nella cache. La versione precedente (eventualmente compressa) verrà pubblicata. Qualsiasi file che hai modificato avrà un nuovo MD5 e sarà ricompilato.

È anche possibile eliminare l'intera cache delle risorse con lo Heroku Repo plugin nella casella degli strumenti di Heroku. Installazione che, quindi utilizzare il comando

heroku repo:purge_cache 

Distribuire una nuova versione dopo lo spurgo la cache e tutti i vostri beni saranno ricompilati.

+0

Rimuovere 'config.assets.js_compressor =: uglifier' è sufficiente per risolverlo – Dorian

1

Ho dovuto aggiornare Rails.application.config.assets.version in config/initializers/assets.rb per le modifiche production.rb per rendere effettive.

1

Trovare e commentare queste righe in environments/production.rb:

config.assets.js_compressor = ... 
config.assets.css_compressor = ... 
Problemi correlati