0

我正在使用thrift_client 0.8.1 library。并且它支持一些钩子接口。

client = ThriftClient.new(FooService, host)

client.add_callback :before_method do |*args|
  ActionController::Base.logger.info instance_eval("@current_server")
  logger.info args.inspect
end

client.add_callback :post_connect do |client|
  logger.info "A thrift server connection has been made<#{client.current_server}>"
end

每次调用一个方法,我都想记录一下thrift server的信息。所以我安装了一个:before method钩子,但我认为instance_eval("@current_server")它不像我预期的那样工作。@current_server是类中的一个实例变量ThriftClient。问题是什么?

4

1 回答 1

0

我不相信 :before_method 回调是在 ThriftClient 实例上下文中调用的。这是调用 :before_method:

  def do_callbacks(callback_type_sym, *args)
    return unless @callbacks[callback_type_sym]
    @callbacks[callback_type_sym].each do |callback|
      callback.call(*args)
    end
  end

:before_method CB 使用方法名称调用。对于 :post_connect 它是客户端实例。

于 2012-11-06T15:19:43.113 回答