module Motor::Assets

Constants

ASSETS_PATH
CACHE_STORE
DEV_SERVER_URL
InvalidPathError
MANIFEST_PATH

Public Instance Methods

asset_path(path) click to toggle source
# File lib/motor/assets.rb, line 32
def asset_path(path)
  Motor::Admin.routes.url_helpers.motor_asset_path(manifest[path])
end
icons() click to toggle source
# File lib/motor/assets.rb, line 26
def icons
  manifest.select do |k, v|
    !k.ends_with?('.gz') && v.starts_with?('icons/') && v.exclude?('DS_Store')
  end.keys
end
load_asset(filename, gzip: false) click to toggle source
# File lib/motor/assets.rb, line 36
def load_asset(filename, gzip: false)
  if Motor.development?
    load_from_dev_server(filename)
  else
    load_from_disk(filename, gzip: gzip)
  end
end
load_from_dev_server(filename) click to toggle source
# File lib/motor/assets.rb, line 56
def load_from_dev_server(filename)
  uri = URI(DEV_SERVER_URL + filename)

  Net::HTTP.get_response(uri).body
end
load_from_disk(filename, gzip:) click to toggle source
# File lib/motor/assets.rb, line 44
def load_from_disk(filename, gzip:)
  filename += '.gz' if gzip

  raise InvalidPathError if filename.include?('..')

  path = ASSETS_PATH.join(filename)

  raise InvalidPathError unless path.to_s.starts_with?(ASSETS_PATH.to_s)

  path.read
end
manifest() click to toggle source
# File lib/motor/assets.rb, line 20
def manifest
  CACHE_STORE.fetch('manifest') do
    JSON.parse(MANIFEST_PATH.read)
  end
end