Tengo dos URI en un programa de Ruby. Uno es seguro un URI absoluto y el otro puede ser absoluto o relativo. Me gustaría convertir el segundo en un URI absoluto en el contexto del primero, de modo que si el primero es http://pupeno.com/blog y el segundo es/about, el resultado debería ser http://pupeno.com/about. ¿Alguna idea de como hacerlo?Evaluar un posible URI relativo en el contexto de otro en Ruby
5
A
Respuesta
11
de Rubí Tanto incorporado URI y la Addressable gema, hacen el trabajo por debajo de este. Prefiero direccionable porque tiene más funciones pero el URI está incorporado.
require 'uri'
URI.join('http://pupeno.com/blog', '/about') # => #<URI::HTTP:0x00000101098538 URL:http://pupeno.com/about>
o
require 'addressable/uri'
uri = Addressable::URI.parse('http://pupeno.com/blog')
uri.join('/about') # => #<Addressable::URI:0x806704a0 URI:http://pupeno.com/about>
Es una buena idea utilizar los métodos suministrados join
, porque lo hacen un poco de cordura comprobación para asegurarse de que la dirección de retorno es cuerdo. Asignar directamente a la ruta puede romper cosas si tiene una URL relativa y simplemente reemplaza la ruta anterior. join
tendrá esto en cuenta y reemplazará o fusionará, lo que sea apropiado.
1
Esto lo hará:
require 'uri'
url=URI.parse('http://pupeno.com/blog')
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/blog>
ruby-1.9.2-p0 > url.path="/about"
=> "/about"
ruby-1.9.2-p0 > url
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/about>
Cuestiones relacionadas
- 1. Conseguir el URI relativo de la URI absoluta
- 2. ¿Se puede evaluar el código en el contexto de una persona que llama en Ruby?
- 3. RESTful hipermedia, URI relativo o absoluto
- 4. carga un MediaPlayer desde un Uri en un contexto activo
- 5. Coloque un elemento relativo a otro en CSS
- 6. ¿Cómo construir un URI WebSocket relativo al URI de la página?
- 7. Reemplace el bean de primavera en un contexto con la versión simulada de otro contexto
- 8. ¿Es posible evaluar el buffer completo en Emacs?
- 9. ¿Cuál es la razón para evaluar un hash en Perl en un contexto escalar?
- 10. Haciendo que un módulo herede de otro módulo en Ruby
- 11. Wpf Absoluto frente a URI de paquete relativo
- 12. Run JQuery en el contexto de otro marco
- 13. ¿Es posible renderizar AVCaptureVideoPreviewLayer en un contexto de gráficos?
- 14. ruby: cómo cargar el archivo .rb en el contexto local
- 15. ¿Cómo puedo configurar el esquema de un objeto URI en Ruby
- 16. ¿Es posible importar un archivo MX sin evaluar los contenidos?
- 17. Reemplazar todo el documento HTML en contexto
- 18. ¿Cómo obtener URI de solicitud sin ruta de contexto?
- 19. URI Mapeo de MusicBrainz en Spotify URI
- 20. Cómo tender un puente sobre eventos contexto de aplicación de primavera a otro contexto
- 21. Ruta de archivo absoluto o relativo en el marco web.config
- 22. ¿Cómo pasar un bloque a otro en Ruby?
- 23. Cómo convertir un archivo: // uri en contenido: // uri?
- 24. ¿Es posible llamar a un método de Javascript en el contexto de otra ventana?
- 25. (Ruby, Rails) Contexto de SELF en módulos y bibliotecas ...?
- 26. Contexto en un PreferenceFragment
- 27. ¿Es posible crear un alias para un módulo en Ruby?
- 28. ¿Es posible incluir un archivo MetaPost en otro?
- 29. ¿Es posible crear un Uri que no sea absoluto?
- 30. Ruby: comprobar si URI es HTTPS?
El problema con este enfoque es que la segunda cadena también podría ser un URI absoluto. – Pablo
oops, no entendí esto de la descripción – eggie5