Подтвердить что ты не робот

Отключить активацию в производстве Rails

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

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

4b9b3361

Ответ 1

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

создайте модуль, который ничего не делает для сжатия 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

Ответ 2

В Rails 4 просто комментирует строку

# config.assets.js_compressor = :uglifier

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

Ответ 3

Мне также нужно отлаживать мои 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

Ответ 4

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

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

Счастливая отладка;)

Ответ 5

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

  • Сжатие JavaScripts и CSS:

    config.assets.js_compressor = :uglifier

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

    config.assets.debug = true

Ответ 6

С 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

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

Ответ 7

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

Ответ 8

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

config.assets.js_compressor = ...
config.assets.css_compressor = ...

Ответ 9

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

Respect config.digest = false для пути к ресурсу

Раньше внутренняя среда 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/

Считаете ли вы, что это может быть связано?