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?
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
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.
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
À noter également… En plus de la solution ncherro, vous devrez procéder comme suit:
rake assets:clean
pour nettoyer vos actifs existants.rake assets:precompile
pour compiler vos ressources à l'aide du nouveau compresseur.touch tmp/restart.txt
Bon débogage;)
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
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.
Recherchez et commentez ces lignes dans environments/production.rb
:
config.assets.js_compressor = ...
config.assets.css_compressor = ...
J'ai dû mettre à jour Rails.application.config.assets.version
dans config/initializers/assets.rb
pour que les modifications de production.rb
prennent effet.
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é?