module SpecificAssets::InstanceMethods

Public Instance Methods

add_css(*asset_name) click to toggle source
# File lib/specific_assets/specific_assets.rb, line 9
def add_css(*asset_name)
  @css_specific += asset_name
end
add_js(*asset_name) click to toggle source
# File lib/specific_assets/specific_assets.rb, line 5
def add_js(*asset_name)
  @js_specific += asset_name
end
css_assets() click to toggle source

This method is called in view to include all css assets:

css_assets.each { |css| stylesheet_link_tag(css) }
# File lib/specific_assets/specific_assets.rb, line 25
def css_assets
  unless self.class.css_specific.nil?
    (filter_class_assets("css") + @css_specific).uniq
  else
    @css_specific
  end
end
initialize_assets() click to toggle source
# File lib/specific_assets/specific_assets.rb, line 33
def initialize_assets
  @js_specific  ||= []
  @css_specific ||= []
end
js_assets() click to toggle source

This method is called in view to include all js assets:

js_assets.each { |js| javascript_include_tag(js) }
# File lib/specific_assets/specific_assets.rb, line 15
def js_assets
  unless self.class.js_specific.nil?
    (filter_class_assets("js") + @js_specific).uniq
  else
    @js_specific
  end
end

Private Instance Methods

filter_class_assets(asset_type) click to toggle source

Because assets end up being collected in a class variable assets from other controllers usually end up in the controller that has nothing to do with them. This method filters assets and returns the ones which are relevant to the current controller.

# File lib/specific_assets/specific_assets.rb, line 44
def filter_class_assets(asset_type)
  self.class.send("#{asset_type}_specific").map { |a| a[:controller] == self.class.to_s ? a[:asset] : nil }.compact
end