Отключить кэширование ресурсов Sprockets в разработке на Rails 4
Другой вопрос " Отключить кэширование Sprockets в разработке" посвящен тому, как отключить кэширование Sprockets в Rails 3.2. Как вы делаете то же самое на Rails 4? Я работаю над драгоценным камнем, который находится глубоко в конвейере активов и должен очистить tmp/cache/*
и перезапуск Rails становится утомительным.
1 ответ
Если вы посмотрите на источник Sprockets, вы увидите, что если cache_classes
тогда верно app.assets
устанавливается на app.assets.index
и файловая система больше не проверяется.
Чтобы обойти это в процессе разработки, вы можете добавить что-то похожее на следующее development.rb
конфигурация:
# Sprockets configuration: prevent sprockets from caching assets in development
# when cache_classes is set to true
sprockets_env = nil
config.assets.configure do |env|
sprockets_env = env
# Sprockets environment configuration goes here
# env.js_compressor = :uglifier # or :closure, :yui
# env.css_compressor = :sass # or :yui
end
if config.cache_classes
config.after_initialize do
Rails.application.assets = sprockets_env
end
end
Это, по сути, вызывает почтение к объекту Sprockets::Environment до того, как он будет перезаписан объектом Sprockets::Index, и позволяет проверять файловую систему на наличие новых ресурсов, даже когда cache_classes
правда. Кажется, это работает для нас в разработке, так что, надеюсь, это поможет кому-то еще.