Get absolute (base) url in sinatra

落花浮王杯 提交于 2019-11-28 19:31:06

A couple things.

  1. set is a class level method, which means you are modifying the whole app's state with each request
  2. The above is a problem because potentially, the base url could be different on different requests eg http://foo.com and https://foo.com or if you have multiple domains pointed at the same app server using DNS

A better tactic might be to define a helper

helpers do
  def base_url
    @base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
  end
end

If you need the base url outside of responding to queries(not in a get/post/put/delete block or a view), it would be better to set it manually somewhere.

You can get it using request.base_url too =D (take a look at rack/request.rb)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!