【发布时间】:2009-08-26 04:58:29
【问题描述】:
我有一个不久前写的 Flickr 界面,其中的一部分让我很困扰,我想让它变得更好。它的工作方式是我使用缺少的方法从 flickr 对象上调用的方法构造 flickr 调用的 url 参数,例如。
@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 更改更具弹性,因为我有没有硬编码的方法。
但令人恼火的是,在本示例中,组 ID 被传递给 getPhotos 方法而不是 groups 方法。我更希望它看起来像这样。
@flickr.groups(:group_id => "99404851@N00").pools.getPhotos(:user_id => "12656878@N06")
所以我的问题。 Ruby 中有什么方法可以检测到最后一个方法已被调用,以便触发对 Flickr 的调用?
【问题讨论】:
标签: ruby metaprogramming