class SimpleSite::Site

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/simple_site/site.rb, line 6
def initialize(options = {})
  @options = {}
  @options[:buckets] ||= [options.delete(:bucket)].compact
  options[:buckets].each {|bucket| @options[:buckets] << bucket } unless options[:buckets].nil?
  @options.merge!(options)
  @options[:js_files] ||= Dir['_js/*.js']
end

Public Instance Methods

bucket=(bucket) click to toggle source
# File lib/simple_site/site.rb, line 18
def bucket=(bucket)
  @options[:buckets] = [bucket]
end
buckets=(buckets) click to toggle source
# File lib/simple_site/site.rb, line 22
def buckets=(buckets)
  @options[:buckets] = buckets
end
deploy!() click to toggle source
# File lib/simple_site/site.rb, line 49
def deploy!
  Dir.chdir('public')
  Dir['**/*'].select { |f| File.file?(f) }.each do |file|
    deploy file
  end
end
deploy_file!() click to toggle source
# File lib/simple_site/site.rb, line 56
def deploy_file!
  Dir.chdir('public')
  ENV['FILES'].split(",").select { |f| File.file?(f) }.each do |file|
    deploy file
  end
end
generate_css() click to toggle source
# File lib/simple_site/site.rb, line 32
def generate_css
  return unless File.exists? '_sass/style.sass'
  system "sass _sass/style.sass public/css/style.css"
  puts "Regenerated css!"
end
generate_html() click to toggle source
# File lib/simple_site/site.rb, line 26
def generate_html
  engine = Haml::Engine.new(File.read('_src/index.haml'))
  File.open('public/index.html', 'w') {|f| f.write(engine.render(SimpleSite::HamlContext.new)) }
  puts "Regenerated html!"
end
generate_js() click to toggle source
# File lib/simple_site/site.rb, line 38
def generate_js
  return if @options[:js_files].empty?
  system 'mkdir -p _tmp; touch _tmp/js.js; :> _tmp/js.js'
  @options[:js_files].each do |f|
    system "cat _js/#{f} >> _tmp/js.js"
  end
  File.open('public/js/script.js', 'w') {|f| f.write(Uglifier.compile(File.read('_tmp/js.js'))) }
  system 'rm _tmp/js.js'
  puts "Regenerated js!"
end
js_files=(files) click to toggle source
# File lib/simple_site/site.rb, line 14
def js_files=(files)
  @options[:js_files] = files
end

Private Instance Methods

deploy(file) click to toggle source
# File lib/simple_site/site.rb, line 65
def deploy(file)
  age = 7*24*60*60
  options = {
    :access => :public_read,
    :cache_control => "max-age=#{age}"
    # :expires => age.from_now.httpdate
  }
  puts "  --> #{file}"
  @options[:buckets].each do |bucket|
    AWS::S3::S3Object.store(file, open(file), bucket, options)
  end
end