【发布时间】:2015-06-17 18:04:33
【问题描述】:
我正在为 API 创建一个包装类,因为我的应用程序需要在不同时间使用不同的凭据调用它。我开始向包装器传递一个方法和参数,然后在调用它时(基本上)这样做
call
set_credentials
TheAPI::Thing.send(method, args)
ensure
reset_credentials_to_default
end
但是,我意识到这里的挑战是我是否需要链接方法;这样我一次只能调用一个;所以例如我不能TheAPI::Thing.find(id).delete。 (至少,如果不重新调用凭据设置器,这是不可取的,因为我必须获取令牌)。
有没有办法使用 ruby 来收集链接到对象上的方法/参数?还是我只需要传递一些丑陋的有序集合?
编辑:activerecord 的查询构建器肯定会做这样的事情,在返回之前收集链接的方法,然后在它们全部收集之后,确保作为最后一步构建、调用和返回查询?
【问题讨论】:
-
没有“丑陋的有序集合”,您希望它如何确定操作顺序?我想您可以设置一个解析器,该解析器将优先于可能的方法的顺序,但是对于 API,将每个操作分开更有意义,因此您可以做的最好的事情是创建一个类似客户端的类,该类将保存凭据并允许最终用户通过那里提出其他请求。
-
我想我的目标是看看我是否可以让像
Wrapper.find(id).delete这样的链中的方法被连续调用而不返回并调用我的确保块。或者,如果有一种我不知道的方法可以简单地解析在对象上调用的一系列方法(这没有多大意义,但只是想我会检查一下)。
标签: ruby-on-rails ruby wrapper