Ruby Sinatra-如何获取服务器';s域名
我正试图在我的Sinatra应用程序中获得域名,但作为一名新手,我真的很难想出如何做到这一点,我知道这一定是可能的Ruby Sinatra-如何获取服务器';s域名,ruby,sinatra,domain-name,Ruby,Sinatra,Domain Name,我正试图在我的Sinatra应用程序中获得域名,但作为一名新手,我真的很难想出如何做到这一点,我知道这一定是可能的 Rack::Request#host_with_port看起来很有希望,但我不知道如何从我的应用程序中获取它-如何从我的Ruby代码中的Rack获取内容 或者还有其他方法吗?我想我真的不想每次请求发生时都这样做(虽然这不是很糟糕),但我认为如果在应用程序加载时只做一次会更好 有什么提示吗?看看: request.env.inspect 因此,您可以看到所有的请求环境变量 我想你在
Rack::Request#host_with_port
看起来很有希望,但我不知道如何从我的应用程序中获取它-如何从我的Ruby代码中的Rack获取内容
或者还有其他方法吗?我想我真的不想每次请求发生时都这样做(虽然这不是很糟糕),但我认为如果在应用程序加载时只做一次会更好
有什么提示吗?看看:
request.env.inspect
因此,您可以看到所有的请求环境变量
我想你在找我
request.env["SERVER_NAME"]
只需在代码中使用
request.host
get "/" do
puts request.host #=> localhost
end
酷:)谢谢,这帮助了我,让我了解了一些关于请求的知识-我没有意识到Sinatra请求类继承自Rack请求-我想知道env属性来自哪里!您还可以使用request.env[“SERVER\u PORT”]和request.env[“PATH\u INFO”]来获取端口号和路径,或者使用request.env[“request\u URI”]来获取整个URI。谢谢:)这肯定会起作用-我可能会将request.host\u与\u PORT一起使用,由于我也需要端口号——我仍然想知道是否需要为每个请求都这样做——是否没有办法在应用程序中只做一次?好的,每个请求都会生成请求对象。因此,对整个应用程序执行一次是不可能的。不过,您可以使用before过滤器来保存重复编码。对于before筛选器,可以使用
before{$Host\u with_port=request.Host\u with_port}
。