diff --git a/.ameba.yml b/.ameba.yml index 9cc083d..cf5dbb2 100644 --- a/.ameba.yml +++ b/.ameba.yml @@ -1,5 +1,5 @@ # This configuration file was generated by `ameba --gen-config` -# on 2019-08-25 09:29:24 UTC using Ameba version 0.10.0. +# on 2019-06-14 15:05:57 UTC using Ameba version 0.10.0. # The point is for the user to remove these configuration records # one by one as the reported problems are removed from the code base. @@ -11,3 +11,32 @@ Lint/UselessAssign: Severity: Warning Excluded: - spec/view_spec.cr + +# Problems found: 1 +# Run `ameba --only Lint/ShadowingOuterLocalVar` for details +Lint/ShadowingOuterLocalVar: + Description: Disallows the usage of the same name as outer local variables for block + or proc arguments. + Enabled: true + Severity: Warning + Excluded: + - spec/run_spec.cr + +# Problems found: 1 +# Run `ameba --only Style/NegatedConditionsInUnless` for details +Style/NegatedConditionsInUnless: + Description: Disallows negated conditions in unless + Enabled: true + Severity: Convention + Excluded: + - src/kemal/ext/response.cr + +# Problems found: 1 +# Run `ameba --only Metrics/CyclomaticComplexity` for details +Metrics/CyclomaticComplexity: + Description: Disallows methods with a cyclomatic complexity higher than `MaxComplexity` + MaxComplexity: 10 + Enabled: true + Severity: Convention + Excluded: + - src/kemal/static_file_handler.cr diff --git a/CHANGELOG.md b/CHANGELOG.md index d7d6b27..2495569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,3 @@ -# 0.26.1 (01-12-2019) - -- Fix process request when a response already closed [#550](https://github.com/kemalcr/kemal/pull/550). Thanks @mamantoha :pray: -- Switch to new Ameba repository [#549](https://github.com/kemalcr/kemal/pull/549). Thanks @mamantoha :pray: -- Check for `KEMAL_ENV` variable already in `Config#initialize`[#552](https://github.com/kemalcr/kemal/pull/552). Thanks @Sija :pray: -- Cleanup Ameba warnings [#551](https://github.com/kemalcr/kemal/pull/551). Thanks @Sija :pray: -- Flush io buffer after each write to log [#554](https://github.com/kemalcr/kemal/pull/554). Thanks @mang :pray: - # 0.26.0 (05-08-2019) - Crystal 0.30.0 support :tada: [#548](https://github.com/kemalcr/kemal/pull/548) and [#544](https://github.com/kemalcr/kemal/pull/544). Thanks @bcardiff and @straight-shoota :pray: diff --git a/shard.yml b/shard.yml index d605e2c..b1629b1 100644 --- a/shard.yml +++ b/shard.yml @@ -1,5 +1,5 @@ name: kemal -version: 0.26.1 +version: 0.26.0 authors: - Serdar Dogruyol diff --git a/spec/helpers_spec.cr b/spec/helpers_spec.cr index 4d45a66..76fc318 100644 --- a/spec/helpers_spec.cr +++ b/spec/helpers_spec.cr @@ -70,7 +70,7 @@ describe "Macros" do halt env, status_code: 400, response: "Missing origin." end - get "/" do |_env| + get "/" do |env| "Hello world" end diff --git a/spec/run_spec.cr b/spec/run_spec.cr index 818cbe9..2553455 100644 --- a/spec/run_spec.cr +++ b/spec/run_spec.cr @@ -6,10 +6,12 @@ private def run(code) #{code} CR String.build do |stdout| - stderr = String.build do |io| - Process.new("crystal", ["eval"], input: IO::Memory.new(code), output: stdout, error: io).wait + stderr = String.build do |stderr| + Process.new("crystal", ["eval"], input: IO::Memory.new(code), output: stdout, error: stderr).wait + end + unless stderr.empty? + fail(stderr) end - fail(stderr) unless stderr.empty? end end diff --git a/src/kemal/cli.cr b/src/kemal/cli.cr index b166708..656a4e6 100644 --- a/src/kemal/cli.cr +++ b/src/kemal/cli.cr @@ -8,6 +8,7 @@ module Kemal @key_file = "" @cert_file = "" @config = Kemal.config + read_env if args parse args end @@ -41,15 +42,21 @@ module Kemal private def configure_ssl {% if !flag?(:without_openssl) %} - if @ssl_enabled - abort "SSL Key Not Found" if !@key_file - abort "SSL Certificate Not Found" if !@cert_file - ssl = Kemal::SSL.new - ssl.key_file = @key_file.not_nil! - ssl.cert_file = @cert_file.not_nil! - Kemal.config.ssl = ssl.context - end - {% end %} + if @ssl_enabled + abort "SSL Key Not Found" if !@key_file + abort "SSL Certificate Not Found" if !@cert_file + ssl = Kemal::SSL.new + ssl.key_file = @key_file.not_nil! + ssl.cert_file = @cert_file.not_nil! + Kemal.config.ssl = ssl.context + end + {% end %} + end + + private def read_env + if kemal_env = ENV["KEMAL_ENV"]? + @config.env = kemal_env + end end end end diff --git a/src/kemal/config.cr b/src/kemal/config.cr index 2efcd66..04bbdd7 100644 --- a/src/kemal/config.cr +++ b/src/kemal/config.cr @@ -29,7 +29,7 @@ module Kemal def initialize @host_binding = "0.0.0.0" @port = 3000 - @env = ENV["KEMAL_ENV"]? || "development" + @env = "development" @serve_static = {"dir_listing" => false, "gzip" => true} @public_folder = "./public" @logging = true diff --git a/src/kemal/ext/response.cr b/src/kemal/ext/response.cr index faf9db1..1f0a8fd 100644 --- a/src/kemal/ext/response.cr +++ b/src/kemal/ext/response.cr @@ -1,7 +1,6 @@ class HTTP::Server::Response class Output def close - # ameba:disable Style/NegatedConditionsInUnless unless response.wrote_headers? && !response.headers.has_key?("Content-Range") response.content_length = @out_count end diff --git a/src/kemal/log_handler.cr b/src/kemal/log_handler.cr index ce08e57..fe902f2 100644 --- a/src/kemal/log_handler.cr +++ b/src/kemal/log_handler.cr @@ -8,14 +8,11 @@ module Kemal elapsed_time = Time.measure { call_next(context) } elapsed_text = elapsed_text(elapsed_time) @io << Time.utc << ' ' << context.response.status_code << ' ' << context.request.method << ' ' << context.request.resource << ' ' << elapsed_text << '\n' - @io.flush context end def write(message : String) @io << message - @io.flush - @io end private def elapsed_text(elapsed) diff --git a/src/kemal/static_file_handler.cr b/src/kemal/static_file_handler.cr index 7f3e061..cd83749 100644 --- a/src/kemal/static_file_handler.cr +++ b/src/kemal/static_file_handler.cr @@ -4,7 +4,6 @@ module Kemal class StaticFileHandler < HTTP::StaticFileHandler - # ameba:disable Metrics/CyclomaticComplexity def call(context : HTTP::Server::Context) return call_next(context) if context.request.path.not_nil! == "/"