Sha256: 3354cb0b2ffb5f48b654638d7aace7f552b39534dd9c023c3176ab55e06570d7

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

module Base
  if Object.const_defined?('RACK_ENV') && RACK_ENV == 'production'
    def bundle
      include_links + tag_for_file('application_compressed')
    end
  else
    def bundle
      include_links + include_files
    end
  end

  def compress
    raise 'You need java to compress assets' if `which java`.empty?

    compressor = "#{File.dirname(__FILE__)}/compressor.jar"
    file = system_path('application_compressed')

    File.open file, 'w+' do |it|
      it.puts files.map {|it| File.read system_path(it) }.join("\n")
    end

    `java -jar #{compressor} --charset utf-8 -o #{file} #{file}`
  end

  protected

  def sources
    raise 'Abstract method'
  end

  def tag(url)
    raise 'Abstract method'
  end

  def url_path(asset_name)
    raise 'Abstract method'
  end

  def links
    sources.select {|it| it[/^http/] }
  end

  def include_links
    links.map {|it| tag it }.join
  end

  def files
    sources - links
  end

  def tag_for_file(asset_name)
    tag url_path(asset_name)
  end

  def include_files
    files.map {|it| tag_for_file it }.join
  end

  def system_path(asset_name)
    'public' + url_path(asset_name)
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
brainopia-assets-0.9.1 lib/assets/base.rb
brainopia-assets-0.9.2 lib/assets/base.rb
brainopia-assets-0.9.4 lib/assets/base.rb
rack-assets-0.9.1 lib/assets/base.rb