with rails image_tag example direct active ruby sinatra haml

ruby - example - rails carrierwave image_tag



Obtener url absoluta(base) en sinatra (2)

En este momento, hago una

get ''/'' do set :base_url, "#{request.env[''rack.url_scheme'']}://#{request.env[''HTTP_HOST'']}" # ... haml :index end

para poder usar options.base_url en HAML index.haml. Pero estoy seguro de que hay una forma mucho mejor de hacerlo, DRY. Sin embargo, no puedo verlo, ni encontrarlo. (Soy nuevo en Sinatra :))

De alguna manera, fuera de get , no tengo request.env disponible, o eso parece. Así que ponerlo en una inclusión no funcionó.

¿Cómo obtienes tu url base?


Puede obtenerlo utilizando request.base_url too = D (eche un vistazo a rack/request.rb )


Un par de cosas.

  1. set es un método de nivel de clase, lo que significa que está modificando el estado de la aplicación completa con cada solicitud
  2. Lo anterior es un problema porque potencialmente, la URL base podría ser diferente en diferentes solicitudes, por ejemplo, http://foo.com y https://foo.com o si tiene varios dominios apuntando al mismo servidor de aplicaciones usando DNS

Una mejor táctica podría ser definir un ayudante.

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

Si necesita la url base fuera de la respuesta a las consultas (no en un bloque obtener / publicar / poner / eliminar o una vista), sería mejor configurarlo manualmente en algún lugar.