Class: RailsCriticalCss::Actions::BeforeRender

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/rails_critical_css/actions/before_render.rb

Instance Method Summary collapse

Methods included from Helpers

#absolute_asset_file_path, #eval_option, #eval_options, #gen_critical_css_cache_path, #group_assets_by_type

Constructor Details

#initialize(filter_options) ⇒ BeforeRender

Returns a new instance of BeforeRender.



7
8
9
# File 'lib/rails_critical_css/actions/before_render.rb', line 7

def initialize(filter_options)
  @packed_options = filter_options.slice(:css, :cache_key, :cache_prefix)
end

Instance Method Details

#around(controller) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rails_critical_css/actions/before_render.rb', line 11

def around(controller)
  @controller = controller

  options = eval_options(controller, @packed_options)
  cache_path = gen_critical_css_cache_path(options, options[:cache_key])

  # load already compiled css from cache
  critical_css_cache = cache_path.presence && Rails.cache.read(cache_path)
  controller.critical_css_cache = critical_css_cache
  controller.critical_css_enabled = true

  yield
  return unless css_extracting_allowed?

  if critical_css_cache.present? && critical_css_cache[:lazy_css_blocks].present?
    controller.response.body = inject_lazy_css_to_footer(critical_css_cache[:lazy_css_blocks])
  end
end