#<Vanilla::Request:0x00007fb810fce0c0 @env={"rack.version"=>[1, 3], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"puma 4.3.5 Mysterious Traveller", "GATEWAY_INTERFACE"=>"CGI/1.2", "REQUEST_METHOD"=>"GET", "REQUEST_PATH"=>"/debug", "REQUEST_URI"=>"/debug", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"interblah.net", "HTTP_X_FORWARDED_FOR"=>"18.223.241.221", "HTTP_X_FORWARDED_PORT"=>"443", "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_REQUEST_START"=>"1734793867.357", "HTTP_ACCEPT"=>"*/*", "HTTP_USER_AGENT"=>"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "HTTP_ACCEPT_ENCODING"=>"gzip, br, zstd, deflate", "puma.request_body_wait"=>0, "SERVER_NAME"=>"interblah.net", "SERVER_PORT"=>"443", "PATH_INFO"=>"/debug", "REMOTE_ADDR"=>"172.17.0.1", "puma.socket"=>#<TCPSocket:fd 13, AF_INET, 172.17.0.30, 5000>, "rack.hijack?"=>true, "rack.hijack"=>#<Puma::Client:0xdadb48b0 @ready=true>, "rack.input"=>#<Puma::NullIO:0x00007fb8293b7f20>, "rack.url_scheme"=>"https", "rack.after_reply"=>[], "puma.config"=>#<Puma::Configuration:0x00007fb828f56148 @options=#<Puma::UserFileDefaultOptions:0x00007fb828f55d10 @user_options={:environment=>"development"}, @file_options={:config_files=>["puma.config.rb"], :min_threads=>5, :max_threads=>5, :binds=>["tcp://0.0.0.0:5000"], :environment=>"development"}, @default_options={:min_threads=>0, :max_threads=>16, :log_requests=>false, :debug=>false, :binds=>["tcp://0.0.0.0:9292"], :workers=>0, :daemon=>false, :mode=>:http, :worker_timeout=>60, :worker_boot_timeout=>60, :worker_shutdown_timeout=>30, :remote_address=>:socket, :tag=>"app", :environment=>"production", :rackup=>"config.ru", :logger=>#<IO:<STDOUT>>, :persistent_timeout=>20, :first_data_timeout=>30, :raise_exception_on_sigterm=>true}>, @plugins=#<Puma::PluginLoader:0x00007fb828f55c48 @instances=[#<#<Class:0x00007fb828f40eb0>:0x00007fb828f40cd0 @loader=Puma::Plugin>]>, @user_dsl=#<Puma::DSL:0x00007fb828f55b58 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:environment=>"development"}, @plugins=[]>, @file_dsl=#<Puma::DSL:0x00007fb828f55a90 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:config_files=>["puma.config.rb"], :min_threads=>5, :max_threads=>5, :binds=>["tcp://0.0.0.0:5000"], :environment=>"development"}, @plugins=[], @path="puma.config.rb">, @default_dsl=#<Puma::DSL:0x00007fb828f559f0 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:min_threads=>0, :max_threads=>16, :log_requests=>false, :debug=>false, :binds=>["tcp://0.0.0.0:9292"], :workers=>0, :daemon=>false, :mode=>:http, :worker_timeout=>60, :worker_boot_timeout=>60, :worker_shutdown_timeout=>30, :remote_address=>:socket, :tag=>"app", :environment=>"production", :rackup=>"config.ru", :logger=>#<IO:<STDOUT>>, :persistent_timeout=>20, :first_data_timeout=>30, :raise_exception_on_sigterm=>true}, @plugins=[]>>, "vanilla.app"=>#<Application:0x00007fb8281f4388 @renderers={"base"=>Vanilla::Renderers::Base, "markdown"=>Vanilla::Renderers::Kramdown, "bold"=>Vanilla::Renderers::Bold, "erb"=>Vanilla::Renderers::Erb, "rb"=>Vanilla::Renderers::Ruby, "ruby"=>Vanilla::Renderers::Ruby, "haml"=>Vanilla::Renderers::Haml, "raw"=>Vanilla::Renderers::Raw, "textile"=>Vanilla::Renderers::Textile}, @soup=#<Soup:0x00007fb829911868 @backend=#<Soup::Backends::MultiSoup:0x00007fb8299118e0 @backends=[#<Soup::Backends::MultiSoup:0x00007fb82990c660 @backends=[#<Soup::Backends::FileBackend:0x00007fb8298fec18 @base_path="/app/soups/blog">, #<Soup::Backends::FileBackend:0x00007fb8298fcaa8 @base_path="/app/soups/wiki">, #<Soup::Backends::FileBackend:0x00007fb829903f10 @base_path="/app/soups/essays">, #<Soup::Backends::FileBackend:0x00007fb829902de0 @base_path="/app/soups/tutorial">, #<Soup::Backends::FileBackend:0x00007fb829901f58 @base_path="/app/soups/drafts">]>, #<Soup::Backends::FileBackend:0x00007fb8299138c0 @base_path="/app/soups">, #<Soup::Backends::FileBackend:0x00007fb8299134d8 @base_path="/app/soups/dynasnips">, #<Soup::Backends::FileBackend:0x00007fb8299130a0 @base_path="/app/soups/site">, #<Soup::Backends::FileBackend:0x00007fb829912c18 @base_path="/app/soups/system">]>>, @request=#<Vanilla::Request:0x00007fb810fce0c0 ...>, @response=#<Rack::Response:0x00007fb810fcde18 @status=200, @headers={}, @writer=#<Method: Rack::Response(Rack::Response::Helpers)#append(chunk) /app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.3/lib/rack/response.rb:287>, @block=nil, @body=[], @buffered=true, @length=0>>, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}}, @rack_request=#<Rack::Request:0x00007fb810fce098 @params={}, @env={"rack.version"=>[1, 3], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"puma 4.3.5 Mysterious Traveller", "GATEWAY_INTERFACE"=>"CGI/1.2", "REQUEST_METHOD"=>"GET", "REQUEST_PATH"=>"/debug", "REQUEST_URI"=>"/debug", "HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"interblah.net", "HTTP_X_FORWARDED_FOR"=>"18.223.241.221", "HTTP_X_FORWARDED_PORT"=>"443", "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_REQUEST_START"=>"1734793867.357", "HTTP_ACCEPT"=>"*/*", "HTTP_USER_AGENT"=>"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "HTTP_ACCEPT_ENCODING"=>"gzip, br, zstd, deflate", "puma.request_body_wait"=>0, "SERVER_NAME"=>"interblah.net", "SERVER_PORT"=>"443", "PATH_INFO"=>"/debug", "REMOTE_ADDR"=>"172.17.0.1", "puma.socket"=>#<TCPSocket:fd 13, AF_INET, 172.17.0.30, 5000>, "rack.hijack?"=>true, "rack.hijack"=>#<Puma::Client:0xdadb48b0 @ready=true>, "rack.input"=>#<Puma::NullIO:0x00007fb8293b7f20>, "rack.url_scheme"=>"https", "rack.after_reply"=>[], "puma.config"=>#<Puma::Configuration:0x00007fb828f56148 @options=#<Puma::UserFileDefaultOptions:0x00007fb828f55d10 @user_options={:environment=>"development"}, @file_options={:config_files=>["puma.config.rb"], :min_threads=>5, :max_threads=>5, :binds=>["tcp://0.0.0.0:5000"], :environment=>"development"}, @default_options={:min_threads=>0, :max_threads=>16, :log_requests=>false, :debug=>false, :binds=>["tcp://0.0.0.0:9292"], :workers=>0, :daemon=>false, :mode=>:http, :worker_timeout=>60, :worker_boot_timeout=>60, :worker_shutdown_timeout=>30, :remote_address=>:socket, :tag=>"app", :environment=>"production", :rackup=>"config.ru", :logger=>#<IO:<STDOUT>>, :persistent_timeout=>20, :first_data_timeout=>30, :raise_exception_on_sigterm=>true}>, @plugins=#<Puma::PluginLoader:0x00007fb828f55c48 @instances=[#<#<Class:0x00007fb828f40eb0>:0x00007fb828f40cd0 @loader=Puma::Plugin>]>, @user_dsl=#<Puma::DSL:0x00007fb828f55b58 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:environment=>"development"}, @plugins=[]>, @file_dsl=#<Puma::DSL:0x00007fb828f55a90 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:config_files=>["puma.config.rb"], :min_threads=>5, :max_threads=>5, :binds=>["tcp://0.0.0.0:5000"], :environment=>"development"}, @plugins=[], @path="puma.config.rb">, @default_dsl=#<Puma::DSL:0x00007fb828f559f0 @config=#<Puma::Configuration:0x00007fb828f56148 ...>, @options={:min_threads=>0, :max_threads=>16, :log_requests=>false, :debug=>false, :binds=>["tcp://0.0.0.0:9292"], :workers=>0, :daemon=>false, :mode=>:http, :worker_timeout=>60, :worker_boot_timeout=>60, :worker_shutdown_timeout=>30, :remote_address=>:socket, :tag=>"app", :environment=>"production", :rackup=>"config.ru", :logger=>#<IO:<STDOUT>>, :persistent_timeout=>20, :first_data_timeout=>30, :raise_exception_on_sigterm=>true}, @plugins=[]>>, "vanilla.app"=>#<Application:0x00007fb8281f4388 @renderers={"base"=>Vanilla::Renderers::Base, "markdown"=>Vanilla::Renderers::Kramdown, "bold"=>Vanilla::Renderers::Bold, "erb"=>Vanilla::Renderers::Erb, "rb"=>Vanilla::Renderers::Ruby, "ruby"=>Vanilla::Renderers::Ruby, "haml"=>Vanilla::Renderers::Haml, "raw"=>Vanilla::Renderers::Raw, "textile"=>Vanilla::Renderers::Textile}, @soup=#<Soup:0x00007fb829911868 @backend=#<Soup::Backends::MultiSoup:0x00007fb8299118e0 @backends=[#<Soup::Backends::MultiSoup:0x00007fb82990c660 @backends=[#<Soup::Backends::FileBackend:0x00007fb8298fec18 @base_path="/app/soups/blog">, #<Soup::Backends::FileBackend:0x00007fb8298fcaa8 @base_path="/app/soups/wiki">, #<Soup::Backends::FileBackend:0x00007fb829903f10 @base_path="/app/soups/essays">, #<Soup::Backends::FileBackend:0x00007fb829902de0 @base_path="/app/soups/tutorial">, #<Soup::Backends::FileBackend:0x00007fb829901f58 @base_path="/app/soups/drafts">]>, #<Soup::Backends::FileBackend:0x00007fb8299138c0 @base_path="/app/soups">, #<Soup::Backends::FileBackend:0x00007fb8299134d8 @base_path="/app/soups/dynasnips">, #<Soup::Backends::FileBackend:0x00007fb8299130a0 @base_path="/app/soups/site">, #<Soup::Backends::FileBackend:0x00007fb829912c18 @base_path="/app/soups/system">]>>, @request=#<Vanilla::Request:0x00007fb810fce0c0 ...>, @response=#<Rack::Response:0x00007fb810fcde18 @status=200, @headers={}, @writer=#<Method: Rack::Response(Rack::Response::Helpers)#append(chunk) /app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.3/lib/rack/response.rb:287>, @block=nil, @body=[], @buffered=true, @length=0>>, "rack.request.query_string"=>"", "rack.request.query_hash"=>{}}>, @app=#<Application:0x00007fb8281f4388 @renderers={"base"=>Vanilla::Renderers::Base, "markdown"=>Vanilla::Renderers::Kramdown, "bold"=>Vanilla::Renderers::Bold, "erb"=>Vanilla::Renderers::Erb, "rb"=>Vanilla::Renderers::Ruby, "ruby"=>Vanilla::Renderers::Ruby, "haml"=>Vanilla::Renderers::Haml, "raw"=>Vanilla::Renderers::Raw, "textile"=>Vanilla::Renderers::Textile}, @soup=#<Soup:0x00007fb829911868 @backend=#<Soup::Backends::MultiSoup:0x00007fb8299118e0 @backends=[#<Soup::Backends::MultiSoup:0x00007fb82990c660 @backends=[#<Soup::Backends::FileBackend:0x00007fb8298fec18 @base_path="/app/soups/blog">, #<Soup::Backends::FileBackend:0x00007fb8298fcaa8 @base_path="/app/soups/wiki">, #<Soup::Backends::FileBackend:0x00007fb829903f10 @base_path="/app/soups/essays">, #<Soup::Backends::FileBackend:0x00007fb829902de0 @base_path="/app/soups/tutorial">, #<Soup::Backends::FileBackend:0x00007fb829901f58 @base_path="/app/soups/drafts">]>, #<Soup::Backends::FileBackend:0x00007fb8299138c0 @base_path="/app/soups">, #<Soup::Backends::FileBackend:0x00007fb8299134d8 @base_path="/app/soups/dynasnips">, #<Soup::Backends::FileBackend:0x00007fb8299130a0 @base_path="/app/soups/site">, #<Soup::Backends::FileBackend:0x00007fb829912c18 @base_path="/app/soups/system">]>>, @request=#<Vanilla::Request:0x00007fb810fce0c0 ...>, @response=#<Rack::Response:0x00007fb810fcde18 @status=200, @headers={}, @writer=#<Method: Rack::Response(Rack::Response::Helpers)#append(chunk) /app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.3/lib/rack/response.rb:287>, @block=nil, @body=[], @buffered=true, @length=0>>, @snip_name="debug", @part=nil, @format="html", @symbolised_params={}, @method="get">