Если у вас есть простой сервер для монтажа в стойку, как это:
require 'rack'
require 'rack/server'
class EnvInspector
def self.call(env)
[200, {}, [env.inspect]]
end
end
run EnvInspector
она вернет вам что-то вроде этого, что говорит вам все ключи в env
переменной:
{
"SERVER_SOFTWARE"=>"thin 1.4.1 codename Chromeo",
"SERVER_NAME"=>"localhost",
"rack.input"=>#<StringIO:0x007fa1bce039f8>,
"rack.version"=>[1, 0],
"rack.errors"=>#<IO:<STDERR>>,
"rack.multithread"=>false,
"rack.multiprocess"=>false,
"rack.run_once"=>false,
"REQUEST_METHOD"=>"GET",
"REQUEST_PATH"=>"/favicon.ico",
"PATH_INFO"=>"/favicon.ico",
"REQUEST_URI"=>"/favicon.ico",
"HTTP_VERSION"=>"HTTP/1.1",
"HTTP_HOST"=>"localhost:8080",
"HTTP_CONNECTION"=>"keep-alive",
"HTTP_ACCEPT"=>"*/*",
"HTTP_USER_AGENT"=>
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11",
"HTTP_ACCEPT_ENCODING"=>"gzip,deflate,sdch",
"HTTP_ACCEPT_LANGUAGE"=>"en-US,en;q=0.8",
"HTTP_ACCEPT_CHARSET"=>"ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"HTTP_COOKIE"=> "_gauges_unique_year=1; _gauges_unique_month=1",
"GATEWAY_INTERFACE"=>"CGI/1.2",
"SERVER_PORT"=>"8080",
"QUERY_STRING"=>"",
"SERVER_PROTOCOL"=>"HTTP/1.1",
"rack.url_scheme"=>"http",
"SCRIPT_NAME"=>"",
"REMOTE_ADDR"=>"127.0.0.1",
"async.callback"=>#<Method: Thin::Connection#post_process>,
"async.close"=>#<EventMachine::DefaultDeferrable:0x007fa1bce35b88
}
Так env['REQUEST_URI']
будет эквивалентно РНР $_SERVER['REQUEST_URI']
См http://hawkins.io/2012/07/rack_from_the_beginning/ дополнительные примеры, как использовать Стеллаж.
Если вы пытаетесь узнать только Ruby, тогда вам даже не нужно использовать Passenger или Apache, вам нужен только Ruby. Переменные, которые вы используете, являются стандартными и передаются из Apache через таблицу окружения, поэтому, да, Ruby может видеть их, глядя на «ENV», но вы должны полагаться на фреймворк, чтобы получить их и передать их вам. –