class PopularityContest::Web

Public Class Methods

new(app = nil) click to toggle source
Calls superclass method
# File lib/popularity_contest/web.rb, line 20
def initialize(app = nil)
  super
  @app = app
  @redis = $redis

  if @redis
    puts "PopularityContest: Running in #{Sinatra::Base.environment} environment"
  else
    puts "=> Statistics Redis connection failure"
  end
end

Private Instance Methods

cors_headers_list() click to toggle source
# File lib/popularity_contest/web.rb, line 84
def cors_headers_list
 {
   'Access-Control-Allow-Origin' => '*',
   'Access-Control-Allow-Methods' => %w(GET OPTIONS).join(', '),
   'Access-Control-Allow-Headers' => %w{Origin Accept Content-Type X-Requested-With X-CSRF-Token}.join(', '),
 }
end
error(statuscode, message) click to toggle source

Error-handling

# File lib/popularity_contest/web.rb, line 75
def error(statuscode, message)
  content_type :json
  status statuscode.to_i # or whatever

  logger.info "#{statuscode} - #{message}"

  {:error => message}.to_json
end
incr_key(content_type, content_id) click to toggle source

Redis-helpers

# File lib/popularity_contest/web.rb, line 65
def incr_key(content_type, content_id)
  @redis.multi do
    key = PopularityContest::key(content_type, content_id)
    puts "PopularityContest: Incrementing key='#{key}'" if Sinatra::Base.development?
    @redis.incr(key)
    @redis.expire(key, 48*60*60) # each time we increment we expire 48 hours out in the future
  end
end