class S3Rails::Resolver

Attributes

s3[RW]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/s3_rails/resolver.rb, line 6
def initialize()
  super
  @s3 = S3Rails::S3.new('config/s3_rails.yml')
end

Public Instance Methods

build_query(path, details) click to toggle source
# File lib/s3_rails/resolver.rb, line 11
def build_query(path, details)
  exts = EXTENSIONS.map do |ext, prefix|
    "{" + 
    details[ext].compact.uniq.map { |e| "#{prefix}#{e}," }.join +
    "}"
  end.join

  path.to_s + exts
end
query(path, details, formats) click to toggle source
# File lib/s3_rails/resolver.rb, line 21
def query(path, details, formats)
  query = build_query(path, details)

  if File.exists?('tmp/reload_s3.txt') &&
      @s3.last_load < File.mtime('tmp/reload_s3.txt')
    reload
  end

  # objects = @s3.bucket.objects.with_prefix(path.prefix).select do |obj|
  #   File.fnmatch query, obj.key, File::FNM_EXTGLOB
  # end

  objects = @s3.objects.select do |key, obj|
    File.fnmatch query, key, File::FNM_EXTGLOB
  end

  objects.map do |key, obj|
    template = "s3/#{@s3.bucket_name}/#{obj.key}"
    handler, format, variant = 
      extract_handler_and_format_and_variant(template, formats)
    contents = obj.read

    ActionView::Template.new(contents, template, handler,
      :virtual_path => path.virtual,
      :format       => format,
      :variant      => variant,
      :updated_at   => obj.last_modified
    )
  end
end
reload() click to toggle source
# File lib/s3_rails/resolver.rb, line 52
def reload
  @s3.load_cache
  clear_cache
end