class Photish::Command::Host
Public Instance Methods
run()
click to toggle source
# File lib/photish/command/host.rb, line 4 def run log.debug "Site will be running at http://0.0.0.0:#{port}/" log.debug "Monitoring paths #{paths_to_monitor}" regenerate_entire_site regenerate_thread start_http_server_with_listener end
Private Instance Methods
access_log()
click to toggle source
# File lib/photish/command/host.rb, line 80 def access_log [ [Photish::Log::IO.new(log, :debug), WEBrick::AccessLog::COMBINED_LOG_FORMAT] ] end
changes_as_hash(mod, add, del)
click to toggle source
# File lib/photish/command/host.rb, line 69 def changes_as_hash(mod, add, del) { modified: mod, added: add, removed: del, } end
handle_change(mod, add, del)
click to toggle source
# File lib/photish/command/host.rb, line 63 def handle_change(mod, add, del) changes = changes_as_hash(mod, add, del) log.debug "File change detected: #{changes}}" queue.push(changes) end
listener()
click to toggle source
# File lib/photish/command/host.rb, line 55 def listener @listener ||= Listen.to(*paths_to_monitor) do |mod, add, del| handle_errors('File Change Listener') do handle_change(mod, add, del) end end end
paths_to_monitor()
click to toggle source
# File lib/photish/command/host.rb, line 75 def paths_to_monitor [site_dir, photo_dir] end
queue()
click to toggle source
# File lib/photish/command/host.rb, line 98 def queue @queue ||= Queue.new end
regenerate_entire_site()
click to toggle source
# File lib/photish/command/host.rb, line 87 def regenerate_entire_site log.debug "Regenerating site" Photish::Command::Generate.new(regenerate_runtime_config) .execute end
regenerate_loop()
click to toggle source
# File lib/photish/command/host.rb, line 40 def regenerate_loop loop do queue.pop queue.clear regenerate_entire_site end end
regenerate_runtime_config()
click to toggle source
# File lib/photish/command/host.rb, line 93 def regenerate_runtime_config runtime_config.merge(url: { type: 'absolute_relative' }, soft_failure: true) end
regenerate_thread()
click to toggle source
# File lib/photish/command/host.rb, line 32 def regenerate_thread @regenerate_thread ||= Thread.new do handle_errors('Regenerate Thread') do regenerate_loop end end end
server()
click to toggle source
# File lib/photish/command/host.rb, line 48 def server @server ||= WEBrick::HTTPServer.new(Port: port, DocumentRoot: output_dir, AccessLog: access_log, Logger: log) end
start_http_server_with_listener()
click to toggle source
# File lib/photish/command/host.rb, line 22 def start_http_server_with_listener trap 'INT' do server.shutdown end listener.start server.start log.debug "Photish host has shutdown" ensure regenerate_thread.exit if @regenerate_thread listener.stop if @listener end