У меня есть интерфейс Flickr, который я написал некоторое время назад, и часть его беспокоит меня, и я хотел бы сделать его лучше. Как это работает, я использую метод отсутствия для создания параметров url для вызова flickr из методов, вызываемых для объекта flickr, например.
@flickr.groups.pools.getPhotos(:user_id => "12656878@N06", :group_id => "99404851@N00")
Эти "вызовы методов" создают вызов API, который выглядит следующим образом
http://api.flickr.com/services/rest/?method=groups.pools.getPhotos&user_id=1848466274& group_id= 99404851@N00
(я оставил бит ключа API)
Это делается путем запоминания каждого «метода» до тех пор, пока метод не будет вызван с аргументами, и в этот момент он создает URL-адрес и выполняет вызов Flickr.
Причина, по которой я выбрал этот подход, состоит в том, что код ruby соответствует документации на сайте Flickr, вы можете скопировать и вставить его, и он будет в основном работать, и, надеюсь, он сделает его немного более устойчивым к изменениям API, поскольку у меня есть нет жестко закодированных методов.
Что раздражает в этом, так это то, что в этом примере идентификатор группы передается в метод getPhotos, а не в методе groups. Я бы предпочел, чтобы это выглядело так.
@flickr.groups(:group_id => "99404851@N00").pools.getPhotos(:user_id => "12656878@N06")
Итак, мой вопрос. Есть ли способ в Ruby, который я могу обнаружить, что последний метод был вызван, чтобы я мог вызвать вызов Flickr?