Tengo una interfaz de Flickr que escribí hace un tiempo y parte de eso me molesta y me gustaría hacerlo más agradable. La forma en que funciona es utilizar el método que falta para construir los parámetros url para la llamada flickr de los métodos llamados en el objeto flickr, por ejemplo.Cómo detectar el final de una cadena de métodos en Ruby
@flickr.groups.pools.getPhotos(:user_id => "[email protected]", :group_id => "[email protected]")
Estos 'método llama' construir una llamada a la API que tiene este aspecto
http://api.flickr.com/services/rest/?method=groups.pools.getPhotos&user_id=1848466274& group_id= [email protected]
(He dejado fuera de la barba de la llave API) Para ello, recordando cada uno 'método' hasta que un método se invoca con argumentos en cuyo momento construye la url y hace la llamada a Flickr.
La razón por la que tomé este enfoque es para que el código de rubí coincida con la documentación en el sitio de Flickr, puede copiarlo y pegarlo y funcionará principalmente, y con suerte lo hará un poco más resistente a los cambios de API porque no tiene métodos codificados
Lo que irrita acerca de esto es que en este ejemplo, la identificación del grupo se pasa al método getPhotos en lugar del método de grupos. Preferiría que se viera así.
@flickr.groups(:group_id => "[email protected]").pools.getPhotos(:user_id => "[email protected]")
Así que mi pregunta. ¿Hay alguna forma en Ruby en la que pueda detectar que se ha llamado al último método para poder activar la llamada a Flickr?
¿Por qué "@flickr" en el ámbito externo? ¿Cuál es la ventaja de convertirlo en una variable de instancia de Object frente a una variable local? –
Sin ventaja (en este caso). Simplemente un brainfart, no hay consideraciones especiales en él :) –
Sí, este era un método alternativo que había examinado. Y usando memoization en los atributos. Esperaba que hubiera algún método funky del que no tengo conocimiento. – Henry