class RailsCriticalCssServer::Rewrite
Attributes
block[R]
cache[R]
manifest[R]
skip[R]
template[R]
version[R]
Public Class Methods
new(template, manifest: template.asset_url('application.css'), version: Config.version, skip: false, cache: true, &block)
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 9 def initialize(template, manifest: template.asset_url('application.css'), version: Config.version, skip: false, cache: true, &block) @template = template @manifest = manifest @version = version @skip = skip @block = block @cache = cache end
Public Instance Methods
cache_key()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 27 def cache_key [version, manifest, key].join(':') end
call()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 18 def call return original_html unless should_run? return cached_value if cache && cached_value.present? return original_html unless content_ready? Rails.cache.write(self, rewritten_html) if cache rewritten_html end
Private Instance Methods
cached_value()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 33 def cached_value return @cached_value if defined? @cached_value @cached_value = Rails.cache.read(self) end
client()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 71 def client @client ||= Client.new(key, request.original_url, manifest) end
content()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 38 def content @content ||= client.read! end
content_ready?()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 42 def content_ready? content.present? && content.ok? end
key()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 75 def key "#{params[:controller]}##{params[:action]}:#{version}" end
original_html()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 46 def original_html return @original_html if defined? @original_html @original_html = template.capture { block.call } end
phantomjs_useragent?()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 67 def phantomjs_useragent? request.user_agent.present? && request.user_agent.match(/PhantomJS/) end
rewritten_html()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 51 def rewritten_html return @rewritten_html if defined? @rewritten_html css_files = ExtractCssFromHtml.call(original_html) @rewritten_html = template.capture do template.render 'rails_critical_css_server/css_load', css_files: css_files, critical_css: content, original_html: original_html end end
should_run?()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 63 def should_run? !skip && !phantomjs_useragent? && Config.host.present? end
to_s()
click to toggle source
# File lib/rails_critical_css_server/rewrite.rb, line 79 def to_s self.class.to_s end