it-swarm.com.ru

Отключить минимизацию активов в Rails Production

Чтобы отлаживать javascript в моей рабочей среде heroku, мне нужно отключить сжатие активов (или, по крайней мере, сжатие javascript). Я пробовал config.assets.compress = false вместе с config.assets.debug = true, и сжатые ресурсы все еще использовались. Затем я удалил сжатые активы, после чего никакие активы не были отображены вообще. Я добавил config.assets.enabled = false, который не помог. Я попытался скопировать несжатые ресурсы в различные каталоги, включая корень приложения, общедоступный и общедоступный/ресурсы (последние два с использованием папок «изображения», «javascripts» и «таблицы стилей») и поместив ресурсы непосредственно в папки без три подпапки.) В конце концов мне удалось заставить работать javascript-скрипты, изменив html так, чтобы он напрямую ссылался на все файлы javascript. Но CSS и изображения все еще не работают.

Я бы подумал, что мой оригинальный config.assets.compress = false должен был сработать. Есть идеи, что я сделал не так?

37
Jack R-G

Я нашел этот обходной путь после прочтения документы :

создайте модуль, который ничего не делает для сжатия js/css здесь: lib/modules/no_compression.rb

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
51
ncherro

Под Rails 4 просто комментирую строку

# config.assets.js_compressor = :uglifier

у меня config/environments/production.rb работал. Похоже, по умолчанию это не компрессон.

24
geekQ

Мне также нужно отладить JS, поэтому я попробовал решение ncherro. Проблема заключалась в том, что это все равно

грабли прерваны! неинициализированная константа NoCompression

Поэтому я просто поместил класс NoCompression в файл 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

Также стоит отметить ... В дополнение к решению ncherro вам нужно будет сделать следующее:

  1. убедитесь, что ваш новый модуль находится там, где он будет загружен по умолчанию. Была ли lib/extras в моем случае.
  2. запустите rake assets:clean, чтобы очистить ваши существующие активы.
  3. запустите rake assets:precompile, чтобы скомпилировать ваши ресурсы, используя новый компрессор.
  4. перезапустите приложение ... я использую touch tmp/restart.txt

Удачной отладки;)

6
whyvez

Закомментируйте uglifier и добавьте config.assets.debug = true. Это сработало для меня.

  • Сжатие JavaScripts и CSS:

    config.assets.js_compressor = :uglifier

  • Режим отладки отключает объединение и предварительную обработку активов. Но эта опция может вызвать значительные задержки при рендеринге представления с большим количеством сложных активов:

    config.assets.debug = true

6
user3630729

С Rails 4 на Heroku вам нужно сделать две вещи. Сначала, как упомянул @geekQ, закомментируйте строку js_compressor в config/environments/production.rb

# config.assets.js_compressor = :uglifier

Во-вторых, вам необходимо учитывать кэш конвейера активов Heroku для Rails 4. Любой файл с той же MD5, что и версия в кеше, перекомпилироваться не будет. Предыдущая (возможно сжатая) версия будет обслуживаться. Любой файл, который вы редактируете, будет иметь новый MD5 и будет перекомпилирован. 

Вы также можете очистить весь кэш активов с помощью плагина Heroku Repo к инструментальному поясу Heroku. Установите это, затем используйте команду 

heroku repo:purge_cache

Разверните новую версию после очистки кеша, и все ваши ресурсы будут перекомпилированы.

2
dodgio

Найдите и закомментируйте эти строки в environments/production.rb:

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

Мне пришлось обновить Rails.application.config.assets.version в config/initializers/assets.rb, чтобы изменения production.rb вступили в силу.

1
averageradical

Похоже, это МОЖЕТ быть ошибкой в ​​Rails. Из журнала изменений для будущих Rails 3.2.9, это то, с чем вы столкнулись?

Respect config.digest = false для asset_path

Ранее внутренние ресурсы asset_path учитывали только параметр: digest, но игнорировали глобальные настройки конфигурации. Это означало, что config.digest = false нельзя использовать вместе с config.compile = false, это исправляет поведение.

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

Как вы думаете, это может быть связано?

0
jrochkind