Sha256: d2cb1c914247d0f42805fd32b3f9838240eefc746ae0d9ef9717245dbdc1ae94
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
require 'rack' module WhippedCream # A server handles building a plugin/runner and starting a web server class Server attr_reader :plugin, :options def initialize(plugin, options = {}) @plugin = plugin @options = options end def start ensure_routes_built ensure_runner_started start_web end def runner @runner ||= Runner.create_instance(plugin) end def web @web ||= Web end private def ensure_runner_started runner end def ensure_routes_built @routes_built ||= build_routes || true end def rack_options { app: web, Port: options.fetch(:port, 8080), daemonize: !!options[:daemonize] } end def start_web Rack::Server.start rack_options end def build_routes build_button_routes build_switch_routes end def build_button_routes plugin.buttons.each do |button| web.get "/#{button.id}" do runner.send button.id redirect to('/') end end end def build_switch_routes plugin.switches.each do |switch| web.get "/#{switch.id}" do runner.send switch.id redirect to('/') end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
whipped-cream-0.1.1 | lib/whipped-cream/server.rb |
whipped-cream-0.1.0 | lib/whipped-cream/server.rb |