diff --git a/.gitignore b/.gitignore index cbd7075..d6d09a3 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ run-rails-master-hook +/log diff --git a/config.ru b/config.ru index 52a9669..667bec5 100644 --- a/config.ru +++ b/config.ru @@ -2,6 +2,17 @@ require "fileutils" require "rack" +require "logger" + +# Setup logger - log to STDOUT for systemd +logger = Logger.new(STDOUT) +logger.level = ENV["LOG_LEVEL"] ? Logger.const_get(ENV["LOG_LEVEL"].upcase) : Logger::INFO +logger.formatter = proc do |severity, datetime, progname, msg| + "#{severity}: #{msg}\n" +end + +# Use Rack::CommonLogger for HTTP request logging +use Rack::CommonLogger, logger run_file = ENV["RUN_FILE"] || "#{__dir__}/run-rails-master-hook" scheduled = <(env) do - if env["REQUEST_METHOD"] == "POST" + request_method = env["REQUEST_METHOD"] + + if request_method == "POST" + logger.info "Triggering Rails master hook by touching #{run_file}" FileUtils.touch(run_file) + logger.info "Rails master hook scheduled successfully" [200, {"Content-Type" => "text/plain", "Content-Length" => scheduled.length.to_s}, [scheduled]] else + logger.warn "Rejected non-POST request (#{request_method}) to /rails-master-hook" [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []] end end