Mam interfejs Flickr, który napisałem jakiś czas temu, a część mnie zawodzi i chciałbym, żeby było ładniej. Sposób, w jaki to działa, to brakująca metoda do konstruowania parametrów adresu URL dla wywołania flickr z metod wywoływanych przez obiekt flickr, np.Jak wykryć koniec łańcucha metod w Ruby
@flickr.groups.pools.getPhotos(:user_id => "[email protected]", :group_id => "[email protected]")
Te „wywołuje metodę” skonstruowania wywołanie API, które wygląda tak
http://api.flickr.com/services/rest/?method=groups.pools.getPhotos&user_id=1848466274& group_id= [email protected]
(Zostawiłem wyłączyć bitowy klucz API) Czyni to poprzez zapamiętywanie każdym „metoda”, aż metody jest wywoływana z argumentami, w którym to czasie tworzy adres URL i wywołuje Flickr.
Powodem, dla którego podjąłem takie podejście, jest to, że kod ruby pasuje do dokumentacji na stronie Flickr, można go skopiować i wkleić, i będzie to głównie działało, i mam nadzieję, że sprawi, że będzie ono bardziej odporne na zmiany API, ponieważ nie mają metod zakodowanych na sztywno.
Podrażnia to jednak tym, że w tym przykładzie identyfikator grupy jest przekazywany do metody getPhotos zamiast metody groups. Wolałbym, żeby tak wyglądało.
@flickr.groups(:group_id => "[email protected]").pools.getPhotos(:user_id => "[email protected]")
Moje pytanie. Czy jest jakiś sposób w Rubim, że mogę wykryć, że ostatnia metoda została wywołana, abym mógł wywołać wywołanie do Flickr?
Dlaczego "@ flickr" w zewnętrznym zakresie? Jaka jest korzyść z tego, że jest zmienną instancji obiektu w stosunku do zmiennej lokalnej? –
Brak korzyści (w tym przypadku). To tylko móżdżek, nie ma w nim specjalnych rozważań :) –
Tak, to była alternatywna metoda, na którą patrzyłem. I za pomocą memoizacji na atrybutach. Miałem nadzieję, że jest jakaś ostra metoda, której nie znam. – Henry