class Daneel::Server

Attributes

logger[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/daneel/server.rb, line 8
def initialize(options = {})
  require 'daneel/web'
  @logger = options[:logger] || Daneel::Logger.new
  @options = {:app => Daneel::Web, :server => "puma"}.merge(options)
  @options[:port] = ENV["PORT"] if ENV["PORT"]
  # Rack expects the port key to be capitalized. Sad day.
  @options[:Port] = @options.delete(:port) if @options[:port]
  logger.debug "Server with options: #{@options}"
end

Public Instance Methods

run() click to toggle source
# File lib/daneel/server.rb, line 18
def run
  Thread.new { run_server }
  sleep 0.1 # boot server before allowing possible interaction
  Thread.new { run_self_ping }
end
run_self_ping() click to toggle source
# File lib/daneel/server.rb, line 28
def run_self_ping
  return unless ENV['HEROKU_URL']
  uri = URI(ENV['HEROKU_URL'])
  http = Net::HTTP::Persistent.new 'daneel'
  loop do
    http.request uri
    sleep (60 * 20) # 20m
  end
end
run_server() click to toggle source
# File lib/daneel/server.rb, line 24
def run_server
  Rack::Server.start(@options)
end