web-dev-qa-db-fra.com

Désactiver la minification des actifs dans la production de rails

Afin de déboguer le javascript dans mon environnement de production heroku, je dois désactiver la compression des actifs (ou au moins la compression du javascript). J'ai essayé config.assets.compress = false avec config.assets.debug = true et les ressources compressées étaient toujours utilisées. J'ai ensuite supprimé les actifs compressés, à ce stade aucun actif n'a été rendu. J'ai ajouté config.assets.enabled = false, ce qui n'a pas aidé. J'ai essayé de copier les ressources non compressées dans différents répertoires, y compris la racine de l'application, public et public/assets (les deux derniers utilisant à la fois les dossiers "images," javascripts "et" stylesheets ", et en plaçant les actifs directement dans les dossiers sans les trois sous-dossiers) .J'ai finalement réussi à faire fonctionner les javascripts en changeant le code HTML pour référencer directement tous les fichiers javascript, mais le CSS et les images ne fonctionnent toujours pas.

J'aurais pensé que mon config.assets.compress = false d'origine aurait dû fonctionner. Des idées que j'ai mal fait?

37
Jack R-G

Je suis venu avec cette solution de contournement après avoir lu les docs :

créez un module qui ne fait rien pour compresser js/css ici: lib/modules/no_compression.rb

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

configurez vos ressources pour (ne pas) être compressées avec votre compresseur Do-Nothing

config.assets.compress = true
config.assets.js_compressor = NoCompression.new
config.assets.css_compressor = NoCompression.new
51
ncherro

Under Rails 4 vient de commenter la ligne

# config.assets.js_compressor = :uglifier

dans config/environments/production.rb a travaillé pour moi. On dirait que default n'est pas compresson.

24
geekQ

J'ai aussi besoin de déboguer mon js alors j'ai essayé la solution de ncherro. Le problème était qu'il jetterait encore

rake avorté! constante non initialisée NoCompression

Je viens donc de mettre la classe NoCompression dans le fichier 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
11
user2576663

À noter également… En plus de la solution ncherro, vous devrez procéder comme suit:

  1. assurez-vous de placer votre nouveau module à un endroit où il sera chargé par défaut. Était lib/extras dans mon cas.
  2. lancez rake assets:clean pour nettoyer vos actifs existants.
  3. lancez rake assets:precompile pour compiler vos ressources à l'aide du nouveau compresseur.
  4. redémarrez votre application ... j'utilise touch tmp/restart.txt

Bon débogage;)

6
whyvez

Mettez en commentaire le filtre et ajoutez config.assets.debug = true. Cela a fonctionné pour moi.

  • Compressez JavaScripts et CSS:

    config.assets.js_compressor = :uglifier

  • Le mode de débogage désactive la concaténation et le prétraitement des actifs. Mais cette option peut entraîner des retards importants dans le rendu de la vue avec un grand nombre d’actifs complexes:

    config.assets.debug = true

6
user3630729

Avec Rails 4 sur Heroku, vous devez faire deux choses. Tout d’abord, comme mentionné par @geekQ, commentez la ligne js_compressor dans config/environments/production.rb

# config.assets.js_compressor = :uglifier

Deuxièmement, vous devez prendre en compte le cache de pipeline d'actifs de Heroku pour Rails 4. / Tous les fichiers avec le même MD5 que la version dans le cache ne seront pas recompilés. La version précédente (éventuellement compressée) sera servie. Tout fichier que vous éditez aura un nouveau MD5 et sera recompilé. 

Vous pouvez également purger l'intégralité du cache d'actifs avec le plug-in Heroku Repo vers la ceinture d'outils Heroku. Installez-le, puis utilisez la commande 

heroku repo:purge_cache

Déployez une nouvelle version après avoir purgé le cache et tous vos actifs seront recompilés.

2
dodgio

Recherchez et commentez ces lignes dans environments/production.rb:

config.assets.js_compressor = ...
config.assets.css_compressor = ...
1
Manish Singh

J'ai dû mettre à jour Rails.application.config.assets.version dans config/initializers/assets.rb pour que les modifications de production.rb prennent effet.

1
averageradical

On dirait que cela pourrait avoir été un bug dans Rails. Dans le changelog de la prochaine version de Rails 3.2.9, est-ce ce que vous rencontriez?

Respectez config.digest = false pour asset_path

Auparavant, les éléments internes asset_path ne respectaient que l'option: digest, mais ignoraient le paramètre de configuration global. Cela signifiait que config.digest = false ne pouvait pas être utilisé avec config.compile = false, cela corrigeait le comportement.

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

Pensez-vous que cela pourrait être lié?

0
jrochkind