Class: ActiveAssets::ActiveExpansions::Assets

Inherits:
Object
  • Object
show all
Defined in:
lib/active_assets/active_expansions/assets.rb

Direct Known Subclasses

Javascripts, Stylesheets

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expansions) ⇒ Assets

Returns a new instance of Assets.



8
9
10
# File 'lib/active_assets/active_expansions/assets.rb', line 8

def initialize(expansions)
  @expansions = expansions
end

Instance Attribute Details

#expansionsObject (readonly)

Returns the value of attribute expansions.



6
7
8
# File 'lib/active_assets/active_expansions/assets.rb', line 6

def expansions
  @expansions
end

Instance Method Details

#[](expansion_name) ⇒ Object



20
21
22
# File 'lib/active_assets/active_expansions/assets.rb', line 20

def [](expansion_name)
  @expansions[expansion_name]
end

#all(&blk) ⇒ Object



24
25
26
27
# File 'lib/active_assets/active_expansions/assets.rb', line 24

def all(&blk)
  @expansions.values.each(&blk) if block_given?
  @expansions.values
end

#asset_typeObject

Raises:

  • (NoMethodError)


37
38
39
# File 'lib/active_assets/active_expansions/assets.rb', line 37

def asset_type
  raise NoMethodError
end

#cache!Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/active_assets/active_expansions/assets.rb', line 60

def cache!
  all do |expansion|
    file_path = "#{"#{expansion.namespace}/" if expansion.namespace}#{expansion.name}.#{asset_type_short}"
    file_path = Rails.root.join('public', asset_type.pluralize, 'cache', file_path)

    paths = expansion.assets.select {|a|
      a.cache &&
      (Array(a.group).include?(:all) ||
      Array(a.group).include?(:deploy) ||
      Array(a.group).any? {|e| Rails.env.send(:"#{e}?") })
    }.map(&:path)

    cleanse_paths!(paths)

    FileUtils.mkdir_p(File.dirname(file_path))

    File.open(file_path, 'w+') do |f|
      paths.each do |path|
        in_file = Rails.root.join('public', asset_type.pluralize, "#{path}.#{asset_type_short}")
        f.puts File.read(in_file)
      end
    end
  end
end

#expansion_namesObject



16
17
18
# File 'lib/active_assets/active_expansions/assets.rb', line 16

def expansion_names
  @expansions.keys
end

#has_expansion?(name) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/active_assets/active_expansions/assets.rb', line 12

def has_expansion?(name)
  @expansions.has_key?(name)
end

#paths(expansion_name) ⇒ Object



29
30
31
# File 'lib/active_assets/active_expansions/assets.rb', line 29

def paths(expansion_name)
  self[expansion_name].assets.map(&:path)
end

#register!Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/active_assets/active_expansions/assets.rb', line 41

def register!
  all do |expansion|
    paths = if ActionController::Base.perform_caching
      group_assets = expansion.assets.select do |a|
        Array(a.group).include?(:deploy) ||
        Array(a.group).any? {|e| e.to_s != 'all' && Rails.env.send(:"#{e}?") }
      end

      group_assets.map(&:path) + [File.join("cache#{"/#{expansion.namespace}" if expansion.namespace}", expansion.name.to_s)]
    else
      expansion.assets.select {|a| a.group == :all || Array(a.group).any? {|e| Rails.env.send(:"#{e}?") } }.map(&:path)
    end

    cleanse_paths!(paths)

    ActionView::Helpers::AssetTagHelper.send(:"register_#{asset_type}_expansion", expansion.name => paths)
  end
end

#remove(expansion_name) ⇒ Object



33
34
35
# File 'lib/active_assets/active_expansions/assets.rb', line 33

def remove(expansion_name)
  @expansions.delete(expansion_name)
end