Sinatra - 我如何获得服务器的域名

Lou*_*ers 27 ruby domain-name sinatra

我正在尝试在我的Sinatra应用程序中获取域名,但作为一个新手我真的很难弄清楚如何做到这一点,我知道它一定是可能的!

Rack::Request#host_with_port 看起来很有前途,但我不知道如何从我的应用程序中获取 - 我如何从我的Ruby代码中获取Rack的东西?

或者还有另一种方式 - 我想我每次发生请求时都不想这样做(虽然它不是太糟糕),但我认为如果我能在应用程序中执行一次会更好加载.

任何提示?

int*_*iot 50

只需request.host在代码中使用.

get  "/" do
  puts request.host #=> localhost
end
Run Code Online (Sandbox Code Playgroud)

  • 谢谢:)这肯定会工作 - 我可能会使用request.host_with_port,因为我也需要端口号 - 我仍然想知道我是否需要为每个请求执行此操作 - 是否我无法做到这一点一次申请? (4认同)

mak*_*oid 10

看一眼:

request.env.inspect
Run Code Online (Sandbox Code Playgroud)

所以你可以看到所有的请求环境变量.

我认为你在寻找

request.env["SERVER_NAME"]
Run Code Online (Sandbox Code Playgroud)

  • 酷:)谢谢,这很有帮助,让我了解了一些关于 request 的知识 - 我没有意识到 Sinatra Request 类继承自 Rack request - 我想知道 env 属性来自哪里! (2认同)