diff options
Diffstat (limited to 'lib/dashing')
-rw-r--r-- | lib/dashing/app.rb | 13 | ||||
-rw-r--r-- | lib/dashing/cli.rb | 12 |
2 files changed, 18 insertions, 7 deletions
diff --git a/lib/dashing/app.rb b/lib/dashing/app.rb index 033849c..0e7f7bb 100644 --- a/lib/dashing/app.rb +++ b/lib/dashing/app.rb @@ -6,6 +6,7 @@ require 'coffee-script' require 'sass' require 'json' require 'yaml' +require 'thin' SCHEDULER = Rufus::Scheduler.new @@ -49,7 +50,7 @@ end end not_found do - send_file File.join(settings.public_folder, '404.html') + send_file File.join(settings.public_folder, '404.html'), status: 404 end at_exit do @@ -119,6 +120,16 @@ get '/views/:widget?.html' do end end +Thin::Server.class_eval do + def stop_with_connection_closing + Sinatra::Application.settings.connections.dup.each(&:close) + stop_without_connection_closing + end + + alias_method :stop_without_connection_closing, :stop + alias_method :stop, :stop_with_connection_closing +end + def send_event(id, body, target=nil) body[:id] = id body[:updatedAt] ||= Time.now.to_i diff --git a/lib/dashing/cli.rb b/lib/dashing/cli.rb index 27d8f6b..4b93f89 100644 --- a/lib/dashing/cli.rb +++ b/lib/dashing/cli.rb @@ -38,12 +38,12 @@ module Dashing puts "Invalid generator. Either use widget, dashboard, or job" end - desc "install GIST_ID", "Installs a new widget from a gist." - def install(gist_id) + desc "install GIST_ID [--skip]", "Installs a new widget from a gist (skip overwrite)." + def install(gist_id, *args) gist = Downloader.get_gist(gist_id) public_url = "https://gist.github.com/#{gist_id}" - install_widget_from_gist(gist) + install_widget_from_gist(gist, args.include?('--skip')) print set_color("Don't forget to edit the ", :yellow) print set_color("Gemfile ", :yellow, :bold) @@ -89,15 +89,15 @@ module Dashing system(command) end - def install_widget_from_gist(gist) + def install_widget_from_gist(gist, skip_overwrite) gist['files'].each do |file, details| if file =~ /\.(html|coffee|scss)\z/ widget_name = File.basename(file, '.*') new_path = File.join(Dir.pwd, 'widgets', widget_name, file) - create_file(new_path, details['content']) + create_file(new_path, details['content'], :skip => skip_overwrite) elsif file.end_with?('.rb') new_path = File.join(Dir.pwd, 'jobs', file) - create_file(new_path, details['content']) + create_file(new_path, details['content'], :skip => skip_overwrite) end end end |