From 41a84f5f1074d4ea672a7f710b22acb7e91b83db Mon Sep 17 00:00:00 2001 From: Faustino Aguilar Date: Sat, 16 Jun 2018 10:10:41 -0500 Subject: [PATCH] Remove reload pipe --- .../cli/commands/pipelines/pipelines_spec.cr | 1 - spec/amber/pipes/reload_spec.cr | 49 -------- src/amber/cli/templates/app/config/routes.cr | 2 - src/amber/pipes/reload.cr | 26 ---- src/amber/support/client_reload.cr | 119 ------------------ 5 files changed, 197 deletions(-) delete mode 100644 spec/amber/pipes/reload_spec.cr delete mode 100644 src/amber/pipes/reload.cr delete mode 100644 src/amber/support/client_reload.cr diff --git a/spec/amber/cli/commands/pipelines/pipelines_spec.cr b/spec/amber/cli/commands/pipelines/pipelines_spec.cr index 0328307bf..69b108c83 100644 --- a/spec/amber/cli/commands/pipelines/pipelines_spec.cr +++ b/spec/amber/cli/commands/pipelines/pipelines_spec.cr @@ -28,7 +28,6 @@ module Amber::CLI Amber::Pipe::Session Amber::Pipe::Flash Amber::Pipe::CSRF - Amber::Pipe::Reload ) static_default_plugs = %w( diff --git a/spec/amber/pipes/reload_spec.cr b/spec/amber/pipes/reload_spec.cr deleted file mode 100644 index 70b42a301..000000000 --- a/spec/amber/pipes/reload_spec.cr +++ /dev/null @@ -1,49 +0,0 @@ -require "../../spec_helper" - -class FakeEnvironment < Amber::Environment::Env - def development? - true - end -end - -module Amber - module Pipe - describe Reload do - headers = HTTP::Headers.new - headers["Accept"] = "text/html" - request = HTTP::Request.new("GET", "/reload", headers) - - Amber::Server.router.draw :web do - get "/reload", HelloController, :index - end - - context "when environment is in development mode" do - pipeline = Pipeline.new - pipeline.build :web do - plug Amber::Pipe::Reload.new(FakeEnvironment.new) - end - pipeline.prepare_pipelines - - it "contains injected code in response.body" do - response = create_request_and_return_io(pipeline, request) - - response.body.should contain "Code injected by Amber Framework" - end - end - - context "when environment is NOT in development mode" do - pipeline = Pipeline.new - pipeline.build :web do - plug Amber::Pipe::Reload.new - end - pipeline.prepare_pipelines - - it "does not have injected reload code in response.body" do - response = create_request_and_return_io(pipeline, request) - - response.body.should_not contain "Code injected by Amber Framework" - end - end - end - end -end diff --git a/src/amber/cli/templates/app/config/routes.cr b/src/amber/cli/templates/app/config/routes.cr index f016ba192..0c9e0e3f3 100644 --- a/src/amber/cli/templates/app/config/routes.cr +++ b/src/amber/cli/templates/app/config/routes.cr @@ -10,8 +10,6 @@ Amber::Server.configure do plug Amber::Pipe::Session.new plug Amber::Pipe::Flash.new plug Amber::Pipe::CSRF.new - # Reload clients browsers (development only) - plug Amber::Pipe::Reload.new if Amber.env.development? end pipeline :api do diff --git a/src/amber/pipes/reload.cr b/src/amber/pipes/reload.cr deleted file mode 100644 index 26effc5cf..000000000 --- a/src/amber/pipes/reload.cr +++ /dev/null @@ -1,26 +0,0 @@ -require "../../support/client_reload" - -module Amber - module Pipe - # Reload clients browsers using `ClientReload`. - # - # NOTE: Amber::Pipe::Reload is intended for use in a development environment. - # ``` - # pipeline :web do - # plug Amber::Pipe::Reload.new - # end - # ``` - class Reload < Base - def initialize(@env : Amber::Environment::Env = Amber.env) - Support::ClientReload.new - end - - def call(context : HTTP::Server::Context) - if @env.development? && context.format == "html" - context.response << Support::ClientReload::INJECTED_CODE - end - call_next(context) - end - end - end -end diff --git a/src/amber/support/client_reload.cr b/src/amber/support/client_reload.cr deleted file mode 100644 index e153d95d4..000000000 --- a/src/amber/support/client_reload.cr +++ /dev/null @@ -1,119 +0,0 @@ -module Amber::Support - # Used by `Amber::Pipe::Reload` - # - # Allow clients browser reloading using WebSockets and file watchers. - struct ClientReload - FILE_TIMESTAMPS = {} of String => String - WEBSOCKET_PATH = rand(0x10000000).to_s(36) - SESSIONS = [] of HTTP::WebSocket - - def initialize - create_reload_server - @app_running = false - spawn run - end - - def run - loop do - scan_files - @app_running = true - sleep 1 - end - end - - private def create_reload_server - Amber::WebSockets::Server::Handler.new "/#{WEBSOCKET_PATH}" do |session| - SESSIONS << session - session.on_close do - SESSIONS.delete session - end - end - end - - private def reload_clients(msg) - SESSIONS.each do |session| - session.@ws.send msg - end - end - - private def check_file(file) - case file - when .ends_with? ".css" - reload_clients(msg: "refreshcss") - else - reload_clients(msg: "reload") - end - end - - private def get_timestamp(file : String) - File.stat(file).mtime.to_s("%Y%m%d%H%M%S") - end - - private def scan_files - file_counter = 0 - Dir.glob(["public/**/*"]) do |file| - timestamp = get_timestamp(file) - if FILE_TIMESTAMPS[file]? != timestamp - if @app_running - log "File changed: ./#{file.colorize(:light_gray)}" - end - FILE_TIMESTAMPS[file] = timestamp - file_counter += 1 - check_file(file) - end - end - if file_counter > 0 - log "Watching #{file_counter} files (browser reload)..." - end - end - - def log(message) - Amber.logger.info(message, "Watcher", :light_gray) - end - - # Code from https://github.com/tapio/live-server/blob/master/injected.html - INJECTED_CODE = <<-HTML - - \n - HTML - end -end